安装mockjs

npm install mockjs

可以使用数据模板生成模拟数据。

Mock.mock( rurl?, rtype?, template ) )
// 或者
Mock.mock( rurl, rtype, function( options ) )

Mock.mock( rurl, rtype, template )
表示当拦截到rurl和rtype的ajax请求时,将根据数据模板template生成模拟数据,并作为响应数据返回。

Mock.mock( rurl, rtype, function( options ) )

记录用于生成响应数据的函数。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

其中:

  • rurl 可选

    表示要拦截的url,可以使字符串,也可以是正则

  • rtype 可选

    表示要拦截的ajax请求方式,如get、post

  • template 可选

    数据模板,可以是对象也可以是字符串

  • function(option) 可选

    表示用于生成响应数据的函数

在项目中,是直接注册所有的mock服务,所以只需要按照一定的格式编写mock即可。
 
首先在mock文件夹下创建index.js文件,这里就是注册所有mock服务的地方

// 首先引入Mock
const Mock = require('mockjs'); // 设置拦截ajax请求的相应时间
Mock.setup({
timeout: '200-600'
}); let configArray = []; // 使用webpack的require.context()遍历所有mock文件
const files = require.context('.', true, /\.js$/);
files.keys().forEach((key) => {
if (key === './index.js') return;
configArray = configArray.concat(files(key).default);
}); // 注册所有的mock服务
configArray.forEach((item) => {
for (let [path, target] of Object.entries(item)) {
let protocol = path.split('|');
Mock.mock(new RegExp('^' + protocol[1]), protocol[0], target);
}
});

服务注册好之后,在main.js中引入

// main.js
require('./mock');

在mock文件夹下随便创建一个文件demoList.js
在该文件中,可以按照index注册服务的格式来写mock

let demoList = [{
id: 1,
name: 'zs',
age: '23',
job: '前端工程师'
},{
id: 2,
name: 'ww',
age: '24',
job: '后端工程师'
}] export default {
'get|/parameter/query': option => {
return {
status: 200,
message: 'success',
data: demoList
};
}
}

当我们在页面发起了ajax请求,路径是'/parameter/query',并且请求方式是get时,就会返回我们写好的mock数据。

我们也可以使用template返回

let demoList = {
status: 200,
message: 'success',
data: [{
id: 1,
name: 'zs',
age: '23',
job: '前端工程师'
},{
id: 2,
name: 'ww',
age: '24',
job: '后端工程师'
}]
};
let demoList2 = [{
id: 1,
name: 'zs',
age: '23',
job: '前端工程师'
},{
id: 2,
name: 'ww',
age: '24',
job: '后端工程师'
}];
export default {
'get|/parameter/query': demoList,
// 也可以这样写
// 官方解释为:记录用于生成响应数据的函数。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。
'get|/parameter/query': (option) => {
// 可以在这个地方对demoList2进行一系列操作,例如增删改
// option 指向本次请求的 Ajax 选项集,含有 url、type 和 body 三个属性
return {
status: 200,
message: 'success',
data: demoList2
};
}
}

当然,当我们想要展示大量数据时,不可能一个一个的写,那样又费时又费力,这时我们就可以根据mockjs的语法规范来快速生成一系列的数据

let demoList = {
status: 200,
message: 'success',
data: {
total: 100,
'rows|10': [{
id: '@guid',
name: '@cname',
'age|20-30': 23,
'job|1': ['前端工程师', '后端工程师', 'UI工程师', '需求工程师']
}]
}
};
export default {
'get|/parameter/query': demoList
}

这样我们就可以每次随机生成10条数据,总数为100条,其中id和name使用的占位符,age是随机取出20-30中的数字,job是随机取出其后数组中的某一项,这在mock文档里都有说明。

最新文章

  1. Android Notification 详解(一)——基本操作
  2. OpenGL快问快答
  3. OracleDBA之数据库管理
  4. 可变参数宏__VA_ARGS__
  5. HDU 1878 欧拉回路
  6. SourceInsight支持Python代码阅读
  7. codeforces 442C C. Artem and Array(有深度的模拟)
  8. hdoj 1404 Digital Deletions(博弈论)
  9. struts——文件上传
  10. osgText::Text简介
  11. Js正则表达式学习之test和compile的简单介绍
  12. PeekMessage与GetMessage的对比
  13. C#基础加强(9)之对象序列化(二进制)
  14. Qt笔记之Q_DECLARE_METATYPE(Type)
  15. 限时订单实现方案(DelayQueue、ActiveMq)
  16. bean标签常用属性
  17. Go第七篇之规范的接口
  18. Python 3 与 Javascript escape 传输确保数据正确方法和中文乱码解决方案
  19. BZOJ5418:[NOI2018]屠龙勇士(exCRT,exgcd,set)
  20. Debian/Ubuntu架设nginx+bugzilla

热门文章

  1. Windows 脚本放到 Linux 服务器不生效的问题 /bin/bash^M: bad interpreter: No such file or directory
  2. QT debug/moc_frmalarminfo.o:(.data.rel.ro._ZTV12FrmAlarmInfo[_ZTV12FrmAlarmInfo]+0x1c0): undefined reference to `non-virtual thunk to FrmAlarmInfo::~FrmAlarmInfo()'解决方法
  3. Nginx日志切割工具logrorate
  4. Elasticsearch使用示例
  5. LocalDateTime 使用记录
  6. net Core做一个webApi的简单实例
  7. (已解决)nginx+php 上传文件大小设置。
  8. 插入排序C语言
  9. U盘启动安装 Centos 出错记录(Reached target Basic System)
  10. nohup--将程序放入后台执行