mock模拟数据
程序员文章站
2022-07-10 10:40:16
...
@
配置:在webpack.config的resolve中添加语句:"@": resolve(“src”) //@相对路径配置;之后就可以@/路径,@会直接从src目录开始匹配查找文件- 官网:
http://mockjs.com/examples.html
bug待解决
执行代码一直报路径查找失败,百度了很久,说axios和mock冲突,需要把mock注释掉,在后台还没有传过来数据的情况下,我注释掉了还怎么模拟数据(迷惑)???
简介
- mock优点
-
前后端分离
让前端工程师独立于后端进行开发。
-
增加测试的真实性
通过随机数据,模拟各种场景。 -
开发无侵入
不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数据。 -
用法简单
符合直觉的接口。 -
数据类型丰富
支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。 -
方便扩展
支持支持扩展更多数据类型,支持自定义函数和正则。 -
在已有接口文档的情况下,我们可以直接按照接口文档来开发,将相应的字段写好,在接口完成 之后,只需要改变url地址即可。
-
不涉及跨域问题
- 经常使用的API:
Mock.mock(url, type, data)
安装
- 安装
cnpm install mockjs --save-dev
- 如果需要卸载
cnpm uninstall mockjs
- 在
main.js
中引入,和全局vue关联
require('./Mock/mock');
或者
import '目录路径'
- 单独封装为模块
mock.js
(新建文件夹)模拟数据,并引入:
import mock from 'mockjs'
- 在
app.vue
(项目)页面中通过axios请求数据(在此之前确保已经引入了axiosimport axios from 'axios
)
mounted() {
axios.get("/starnum").then((res)=>{
console.log(res);
});
}
请求成功后的数据如下,为方便看到数据,直接输出data
使用
一. String
- 随机生成数字范围内的数量
(随机生成1-10颗星星)
Mock.mock("/star", {
"star|1-10": "★"
});
- 生成字符串数字指定次数
(生成六颗星星)
Mock.mock("/starnum", {
"star|2": "★★★"
});
二. Number
- +n 每次自增n;
(生成一个长度为5的对象数组,其中对象的id值每次加2,给定起始值(任意))
Mock.mock("/addnum", {
"number|5": [
{
"id|+2": 3
}
]
});
- 给定范围随机生成,如果后面是数字则随机生成一个范围内数字,如果后面是字符串或对象,则随机生成指定随机数量个对象或字符串
数字:
Mock.mock("/addnum", {
"number|1-10": 3
}
对象
Mock.mock("/addnum", {
"number|1-10": [
{
"id|+2": 3,
name:"mary"
}
]
});
- 同理可以随机小数
整数部分的范围.小数部分位数
Mock.mock('/test',{
"number|1-100.1-10": 1
})
整数部分固定,小数部分随机1-10位
Mock.mock({
"number|123.1-10": 1
})
整数部分固定,小数部分固定三位
Mock.mock({
"number|123.3": 1
})
整数部分固定,小数部分固定10位,但是因为初始数据所以给定了小数部分的前三位
Mock.mock({
"number|123.10": 1.123
})
三. boolean
- 随机
boolean
值(其后跟的数字1没有太大意义)
Mock.mock({
"boolean|1": true
})
四. Object
对象值随机 可以写成数组随机或者json随机
Mock.mock('/obj', {
"result|1-10": [
{
"id|+1": 1,
"name|1": ["mary", "liming", "danny", "lisi"],
"hobby|1-2":
{
"1000": "篮球",
"1001": "足球",
"1002": "乒乓球",
"1003": "羽毛球",
}
}
]
});
如果对象随机后边是集合里面有json,直接随机会重复加倍出现,所以随机产生 使用
+
随机一个对象作为最终值错误结果:数组输出了两次
Mock.mock('/obj',{
"result|1-10":[
{
"id|+1":1,
"name|1":["mary","liming","danny","lisi"],
"hobby|2":[
{
"name":"篮球"
},
{
"name":"足球"
},
{
"name":"乒乓球"
}
]
}
]
});
修改后,索引每次增加指定数量,生成一个对象
Mock.mock('/obj',{
"result|1-10":[
{
"id|+1":1,
"name|1":["mary","liming","danny","lisi"],
"hobby|+2":[
{
"name":"篮球"
},
{
"name":"足球"
},
{
"name":"乒乓球"
}
]
}
]
});
五、正则
- 随机生成指定位数(声明的类型每种都是指定次数)
Mock.mock("/reg", {
"Reg|5": /[a-z][0-9]/
});
生成结果示例:
{Reg: "q7v2i1g6t2"}
- 生成纯数字
生成指定 位数范围的 数字
Mock.mock("/regnum", {
"Reg|1": /\d{5,10}/
});
六、生成随机日期
随机生成指定格式的日期
console.log(Mock.Random.date("yyyy-MM-dd hh-mm-ss"));//2019-06-18 06-49-43
七、随机生成颜色
console.log(Mock.Random.color());//默认产生#颜色值 #799af2
上一篇: Mock数据模板规范详解
下一篇: mock数据学习