前言
作为前端攻城狮,我们一般是不喜欢去写接口的,毕竟把重心放在前端页面的渲染和性能的优化才是我们最应该操心的。下面给大家介绍一个非常方便的模拟数据工具。Mockjs
地址栏
Mockjs官网地址
提示:以下是本篇文章正文内容,下面案例可供参考
一、Mockjs介绍
一个非常好用的数据模拟工具,语法简单,操作便利,把我们的繁重的后台接口业务中解放出来,让我们把重心放在前端。
- mock的优点
1.前后端分离,
2.可随机生成大量的数据
3.用法简单
4.数据类型丰富
5.可扩展数据类型
6.在已有接口文档的情况下,我们可以直接按照接口文档来开发,将相应的字段写好,在接口完成 之后,只需要改变url地址即可。
二、使用
- 安装mockjs
npm install mockjs --save-dev
- 使用
// 引入 Mock
import Mock from 'mockjs'
export default {
// 支持值为 Object 和 Array
'GET /api/users': {
users: [1, 2] },
// GET POST 可省略
'/api/users/1': {
id: 1 },
// 支持自定义函数,API 参考 express@4
'POST /api/users/create': (req, res) => {
res.end('ok');
},
"GET /login/users": Mock.mock({
//生成list数组,数组中有50条数据,
"list|50":[
{
name:'@city', //随机城市
"value|1-100": 50 //1-100位之间,随机生成50个
}
]
})
};
怎么样是不是很棒棒。
三、官方文档
1. 属性值是字符串 String
1、'name|min-max': string
通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。
2、'name|count': string
通过重复 string 生成一个字符串,重复次数等于 count。
2. 属性值是数字 Number
1、'name|+1': number
属性值自动加 1,初始值为 number。
2、'name|min-max': number
生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。
3、'name|min-max.dmin-dmax': number
生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。
Mock.mock({
'number1|1-100.1-10': 1,
'number2|123.1-10': 1,
'number3|123.3': 1,
'number4|123.10': 1.123
})
// =>
{
"number1": 12.92,
"number2": 123.51,
"number3": 123.777,
"number4": 123.1231091814
}
3. 属性值是布尔型 Boolean
1、’name|1': boolean
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
2、'name|min-max': value
随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。
4. 属性值是对象 Object
1、'name|count': object
从属性值 object 中随机选取 count 个属性。
2、'name|min-max': object
从属性值 object 中随机选取 min 到 max 个属性。
5. 属性值是数组 Array
1、'name|1': array
从属性值 array 中随机选取 1 个元素,作为最终值。
2、'name|+1': array
从属性值 array 中顺序选取 1 个元素,作为最终值。
3、'name|min-max': array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
4、'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 count。
6. 属性值是函数 Function
1、'name': function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 ‘name’ 所在的对象。
7. 属性值是正则表达式 RegExp
1、'name': regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
Mock.mock({
'regexp1': /[a-z][A-Z][0-9]/,
'regexp2': /\w\W\s\S\d\D/,
'regexp3': /\d{5,10}/
})
// =>
{
"regexp1": "pJ7",
"regexp2": "F)\fp1G",
"regexp3": "561659409"
}
数据占位符定义规范 DPD
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
占位符 的格式为:
@占位符
@占位符(参数 [, 参数])
注意:
用 @ 来标识其后的字符串是 占位符。
占位符 引用的是 Mock.Random 中的方法。
通过 Mock.Random.extend() 来扩展自定义占位符。
占位符 也可以引用 数据模板 中的属性。
占位符 会优先引用 数据模板 中的属性。
占位符 支持 相对路径 和 绝对路径。
Mock.mock({
name: {
first: '@FIRST',
middle: '@FIRST',
last: '@LAST',
full: '@first @middle @last'
}
})
// =>
{
"name": {
"first": "Charles",
"middle": "Brenda",
"last": "Lopez",
"full": "Charles Brenda Lopez"
}
}
方法
Mock.mock()
Mock.mock( rurl?, rtype?, template|function( options ) )
Mock.setup()
Mock.setup( settings )
Mock.Random()
扩展随机数模板
var Random = Mock.Random
Random.extend({
school: function(date) {
var schools = ['南京大学', '四川大学', '重庆大学', '兰州大学', '浙江大学', '北京大学', '清华大学', '早稻田大学', '哈弗大学', '山东大学', '农业大学', '复旦大学']
return this.pick(schools)
}
})
Mock.mock({
'school|20':[
{
school:'@school',addr:'@city'}
]
})
总结
Mockjs是不是很好用,如果想要详细学习的话建议大家点击文章开始的地址链接跳转到官网学习。