mock 有什么用
我们平时在前后端分离的应用中,有时候可能接口还没有,但是我们的开发工作又不能暂停。
所以经常会写一些模拟数据,直接写在页面中的话,后期又需要修改。
这个时候呢,我们就希望有一个东西,他能像我们请求后台数据一样,返回我们要的数据。
mockjs 就是这样一个东西。他能拦截我们的请求,返回我们模拟的数据,只要定好的字段,后期只要切换一个请求就可以啦。
使用
- 使用npm命令安装mockjs
npm install -save mockjs
- 在你想要放置你的数据的地方,新建一个文件夹mock,在mock下新建一个文件index.js,+ 这里就是我们注册所有mock服务的地方
index.js
import axios from 'axios';
const Mock = require('mockjs');
Mock.XHR.prototype.withCredentials = true;
Mock.setup({ timeout: '200-600' });
let configArray = [];
const files = require.context('.', true, /\.js$/);
files.keys()
.forEach((key) => {
if (key === './index.js') return;
Object.keys(files(key).default)
.forEach((item) => {
configArray = configArray.concat([{ [item]: files(key).default[item] }]);
});
});
configArray.forEach((item) => {
for (let [path, target] of Object.entries(item)) {
let protocol = path.split('|');
Mock.mock(new RegExp('^' + protocol[1]), protocol[0], target);
}
});
axios.interceptors.response.use(
(response) => {
console.log('response', response);
return Promise.resolve(response.data);
},
(error) => {
return Promise.reject(error);
},
);
window.axios = axios;
- 新建一个list.js,更多语法 查看 mock文档
let list = {
status: 200,
message: 'success',
data: {
total: 100,
'result|10': [{
id: '@guid',
name: '@cname',
aliasName: '@first()',
'age|20-30': 23,
'job|1': ['前端工程师', '后端工程师', 'UI工程师', '需求工程师'],
birthday: '@datetime',
mobile:'@mobile',
'email': '@email()',
'address': '@county(true)',
'domicile': '@city(true)',
}]
}
};
let menuList = {
status: 200,
message: 'success',
data: {
total: 1,
'result|1': [{
id: '1',
name: '菜单1',
}]
}
};
export default {
'post|/user/list': list,
'post|/menu/list': menuList,
};
- 在main.js中引用你的mock文件
require('./assets/mock/index.js');
- 使用方式
const { data } = await window.axios['post']('user/list', params);
- 效果如下,返回了100条数据
