很早就想总结下关于mock data 这部分的内容,现在刚好把它总结一下吧。
首先之前完成的许多项目都是自己独立完成前端开发这部分内容的,不过要完成一个完整的包含后端的项目,臣妾做不到阿~~~~~~~(主要是时间也不允许哈哈)所以呢,这个时候mock data就发挥它的作用啦~
简单介绍下mock.js,是一款非常强大的插件,可以模拟服务端的数据,也可以进行增删改查这些操作。
小声bb:在实际项目开发过程中,后端完成接口一般较晚,而我们可以使用mock data来模拟数据,这样可以大大提高效率。
OK,接下来一起玩转mock吧!
第一步,当然是在项目中安装我们的mock插件,如图所示,这里的axios是为了可以模拟后台接口。
可以看到输入“npm install mockjs --save”的时候提示出错啦。
在我的环境中也安装了cnpm,在这里我重新输入“cnpm install mockjs --save”回车,没有错误,安装成功;接着安装了axios插件;
好的,安装成功。
第二步:建立如图所示的文件夹axios,并添加api.js文件;以及在components中添加mock.vue文件
第三步:修改main.js文件
第四步:mock.js
import Mock from 'mockjs' // 引入mockjs
const Random = Mock.Random // Mock.Random 是一个工具类,用于生成各种随机数据
let data = [] // 用于接受生成数据的数组
let size = [
'300x250', '250x250', '240x400', '336x280',
'180x150', '720x300', '468x60', '234x60',
'88x31', '120x90', '120x60', '120x240',
'125x125', '728x90', '160x600', '120x600',
'300x600'
] // 定义随机值
for(let i = 0; i < 10; i ++) { // 可自定义生成的个数
let template = {
'Boolean': Random.boolean, // 可以生成基本数据类型
'Natural': Random.natural(1, 10), // 生成1到100之间自然数
'Integer': Random.integer(1, 100), // 生成1到100之间的整数
'Float': Random.float(0, 100, 0, 5), // 生成0到100之间的浮点数,小数点后尾数为0到5位
'Character': Random.character(), // 生成随机字符串,可加参数定义规则
'String': Random.string(2, 10), // 生成2到10个字符之间的字符串
'Range': Random.range(0, 10, 2), // 生成一个随机数组
'Date': Random.date(), // 生成一个随机日期,可加参数定义日期格式
'Image': Random.image(Random.size, '#02adea', 'Hello'), // Random.size表示将从size数据中任选一个数据
'Color': Random.color(), // 生成一个颜色随机值
'Paragraph':Random.paragraph(2, 5), //生成2至5个句子的文本
'Name': Random.name(), // 生成姓名
'Url': Random.url(), // 生成web地址
'Address': Random.province() // 生成地址
}
data.push(template)
}
Mock.mock('/data/index', 'post', data) // 根据数据模板生成模拟数据
第五步:api.js
import axios from 'axios'
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
// 请求拦截器
axios.interceptors.request.use(function(config) {
return config;
}, function(error) {
return Promise.reject(error);
})
// 响应拦截器
axios.interceptors.response.use(function(response) {
return response;
}, function(error) {
return Promise.reject(error);
})
// 封装axios的post请求
export function fetch(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(response => {
resolve(response.data);
})
.catch((error) => {
reject(error);
})
})
}
export default {
mockdata(url, params) {
return fetch(url, params);
}
}
第六步:mock.vue
<template><div>
</div>
</template>
<script>
import api from './../axios/api.js'
export default {
name: 'Mock',
data () {
return {
dataShow: []
}
},
created () {
this.getdata()
},
methods: {
getdata: function() {
api.mockdata('/data/index')
.then(res => {
console.log(res);
this.dataShow = res.data;
})
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>
基本上就可以满足开发的需要了~~~~挖个坑得空再来补充+完善。