Mock.js使用

JavaScript019

Mock.js使用,第1张

Mock.js 是用来模拟产生一些虚拟的数据,可以让前端在后端接口还没有开发出来时独立开发。我们可以使用真实的url,mockjs可以拦截ajax请求,返回设定好的数据。

可以在src目录下新建mock文件夹,新建index.js文件。在index.js文件中建立虚拟数据。

如果需要使用虚拟数据,就在main.js入口文件中导入mockjs文件。

Mock.setup( settings ): 配置拦截 Ajax 请求时的行为。

Mock.mock( template ): 根据数据模板生成模拟数据。template表示数据模板,可以是对象或字符串。数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值。

'name|rule': value : 属性名 name、生成规则 rule、属性值 value。属性名 和 生成规则 之间用竖线 | 分隔。

'name|min-max': array: 当属性值是数组 Array。通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。

'name|+1': number: 当属性值是数字 Number。属性值自动加 1,初始值为 number。

占位符: 用 @ 来标识其后的字符串是 占位符。占位符 引用的是 Mock.Random 中的方法。

@cname: 随机生成一个常见的中文姓名。

@ctitle( min, max ): 随机生成一句中文标题。默认值为 3 到 7 之间的随机数。

@integer( min, max ): 返回一个随机的整数。min是最小值,max是最大值。

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

此时,前台向后台发送请求,会获取到mokejs虚拟数据,而不是真实的后台数据。

Mock.js (官网地址:http://mockjs.com/)是一款模拟数据生成器,旨在帮助前端工程师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

1,根据数据模板生成模拟数据

2,模拟 Ajax 请求,生成并返回模拟数据

3,基于 HTML 模板生成模拟数据

1.安装mock

2.在src下新建一个mock文件 引入mock.js

3.在页面中发送请求

4.在mock文件夹下的index.js中设置mock数据,并拦截请求,将假数据传入页面

1.属性值是字符串

'name|min-max': string

通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。

'name|count': string

通过重复 string 生成一个字符串,重复次数等于 count。

2.属性值是数字

name|+1': number

属性值自动加 1,初始值为 number。

’name|min-max': number

生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。

'name|min-max.dmin-dmax': number

生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。

3.属性值是布尔类型

'name|1': boolean

随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。

4.属性值是数组

'name|1': array

从属性值 array 中随机选取 1 个元素,作为最终值。

'name|+1': array

从属性值 array 中顺序选取 1 个元素,作为最终值。

'name|min-max': array

通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。

'name|count': array

通过重复属性值 array 生成一个新数组,重复次数为 count。

在开发过程中,有很多的ajax请求,前后端分离开发你肯定遇到这样的问题,后台给你的接口文档,你需要在本地模拟数据返回,可能你也用到过我之前用的蠢方法,就是新建一个test.json文件,放入接口文档中写的返回示例,这么做有个很大的问题是不够灵活,而且还需要切换url,现在学会使用mock.js拦截ajax请求,更加方便的构造你需要的假数据。

在这里我举的例子是在vue项目中如何使用mock.js。

这里我举例最常用的格式

Mock.mock(url,data)

url用正则写,这样get请求传参时,也能拦截数据了。

不设置延时很有可能遇到坑,这里需要留意,因为真实的请求是需要时间的,mock不设置延时则是马上拿到数据返回,这两个情况不同可能导致在接口联调时出现问题。所以最好要先设置延时请求到数据。

生成规则和示例:

Mock.Random 提供的完整方法(占位符)如下: