Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:
- 根据数据模板生成模拟数据
- 模拟 Ajax 请求,生成并返回模拟数据
- 基于 HTML 模板生成模拟数据
Mock.js支持的随机数据类型很丰富,包括文本、数字、布尔值、日期、邮箱、链接、图片、颜色等等,足够我们开发使用了。官方文档
效果演示如下:
安装Mock.js
mock.js只用于开发环境实现模拟数据,而生产环境有真正的后台服务器因此需要mock.js,因此在安装mock.js的时候记得带上参数 –save-dev,进入到项目目录,执行指令:npm i mockjs --save-dev
mock.js使用
最简单的方式就是直接新建一个mock.js文件,然后引入mock.js插件,设置一个延迟时间虚拟服务器响应效果,然后通过Mock.mock拦截请求并随机生成数据返回。
1 | import Mock from 'mockjs' //引入mockjs |
数据结构
在mock.js的数据结构中,每个属性可以由三部分构成:属性名(name),规则(rule),值(value),即’name|rule’: value(属性名 和 规则 之间用竖线 | 分隔,且规则是可选的),属性值可以是字符串 String、数字 Number、布尔型 Boolean、对象 Object、数组 Array、函数 Function、正则 RegExp等,例如:
1 | 'name|min-max': string //随机生成字符串,重复次数大于等于min,小于等于max。 |
数据占位符
在前面的随机数据中我们可以看到属性值中有个@占位符,这里是用 @来标识其后的字符串是占位符,这样在调用Mock.mock就会引用Mock.Random中的方法实现数据的随机生成,Mock.Random 是Mock提供的一个用于生成各种随机数据的工具类,支持多种类型和方法。我们可以通过Mock.Random.Method()或者‘@Method’来实现以下方法:
组件中使用
Mock的好处就是不需要修改前端代码,那么在前端中还是正常的对接API接口即可,如果你封装了axios注意把axios.defaults.baseURL属性注释掉,除非你想在Mock每次都添加完整的api路径,以下是封装了axios的写法。
1 | //以下是封装了axios的写法 |
代码整理
像刚开始那么写当我们数据和接口一多起来就不方便维护了,所以这里我们重新整理下,新增个data.js文件专门存放数据,index.js则负责定义各个接口方法和数据返回即可,data中我们用module.exports导出对象,index中先用Mock.mock(data)生成数据,在后面的接口中我们只要直接通过database.userinfo来获取对应的数据即可。
1 | //index.js |