Mock.js 笔记
1.介绍
- 官方文档,Mock.js用来生成随机数据,拦截 Ajax 请求
- 支持的数据类型丰富,包括文本、数字、布尔值、日期、邮箱、链接、图片、颜色等
- 功能灵活,生成随机数据 和 拦截 Ajax 请求 这两个功能可以独立开来用,也可以混合到一起使用,适合模拟各种场景
- 引入Mock.js
<script src="http://mockjs.com/dist/mock.js"></script>
2.生成随机数据
- 调用对应的方法生成单个数据
<script>
//生成单个随机数据
var flag = Mock.Random.boolean() //true
var num = Mock.Random.natural(0, 100) //9
var date = Mock.Random.date() //2000-06-29
var time = Mock.Random.time() //03:34:09
var cname = Mock.Random.cname() //邱静
</script>
- 根据模版(对象)来输出对应的随机数据
<script>
//生成单个对象
var obj = Mock.mock({
"flag|1": true,//各占50%几率
"num|0-100": 0,//随机数值
"date": "@date",//特殊类型
"time": "@time",//特殊类型
"cname": "@cname",//特殊类型
})
//模拟后台返回数据
var res = Mock.mock({
"code|0-1": 1,
"data|10": [
{
"flag|1": true,//各占50%几率
"num|0-100": 0,//随机数值
"date": "@date",//特殊类型
"time": "@time",//特殊类型
"cname": "@cname",//特殊类型
}
],
})
console.log('obj',obj)
console.log('res',res)
</script>

3.拦截Ajax请求
- 通过模版数据来返回对应的数据,这种模式生成的随机数据是一次性的,不支持缓存和修改
<script>
Mock.mock('/list','get',{
"code|0-1": 1,
"data|10": [
{
"id|+1": 1,
"name": "@cname"
}
],
})
</script>
- 通过回调函数来返回对应的数据,这种模式可以对生成的随机数据进行缓存和修改,推荐
Mock.mock('/list', 'get', function(options){
//{url: '/list', type: 'GET', body: null}
console.log('options',options)
//要返回的数据可提前生成,这里直接返回
return {}
})
- url支持正则表达式,可以给url添加参数,并在回调函数中读取
//ajax请求(带参数)
axios.get('/list?page=1&limit=10')
//正则匹配,可通过options.url对参数进行读取
var url_reg = /\/list*/
Mock.mock(url_reg, 'get', function(options){
//{url: '/list?page=1&limit=10', type: 'GET', body: null}
console.log('options',options)
//要返回的数据可提前生成,这里直接返回
return {}
})
4.数据模板定义规范
- 数据模板中的每个属性由 3 部分构成:属性名、生成规则(可选)、属性值:
- 当生成规则不存在时,则原样输出value,如果存在生成规则,详见下方说明
// 属性名 key
// 生成规则 rule
// 属性值 value
'key|rule': value
- 属性值是字符串:当以值为模板,进行批量复制,如果值是空的,则模板为随机的一个字符
"str|3-7":'hi', // 重复生成 3-7 次 'hi' 例如:str: "hihihihihi"
"str2|2":'hi', // 重复生成 2 次 'hi' 例如:str2: "hihi"
"str3|5":'', // 重复生成 5 次 随机字符 例如:str3: "BwpB9"
- 属性值是数字:+1代表自增,10-20数字代表生产的数值范围
"id|+1":0, // id默认为0 每生成一次数据 id就+1
"age|10-20":10, // age在10-20之间,且为整数
"weight|40-60.0-2":40 // weight在40-60直接,小数部分保留0到2位
- 属性值是布尔型:通过生成规则控制布尔值的几率
"flag|1":true, // flag为随机的布尔值,true/false的概率都是50%
"flag2|10-40":true, // flag为true的几率为 10/(10+40)=0.2,及true与false的比例为10:40
- 属性值是对象:生成规则表示随机选取n个属性进行返回
// 属性值对象中随机选取2个属性
"userInfo|2":{
"name":'张三',
"age":18,
"hobby":'看电影',
"skill":'PHP'
}
// => userInfo: {hobby: "看电影", age: 18}
// 属性值对象中随机选取2-4个属性
"userInfo|2-4":{
"name":'张三',
"age":18,
"hobby":'看电影',
"skill":'PHP'
}
- 属性值是数组:
//规则为 1,从数组元素中随机选一个作为字段值
"gender|1":['男','女']
//规则为 大于1 循环生成数组元素
"userInfo|2":['hi'] // 循环创建数组中的内容,循环次数为2次 => "userInfo":['hi',hi']
"userInfo|2-4":['hi'] // 循环创建数组中的内容,循环次数为2-4次
//规则为 +1 依次输出数组元素
"music|+1":['爱你的早晨','玻璃鞋对白','梦的翅膀受了伤','寂寞在唱什么歌']
5.预定义的值类型
- 将属性值设置成下面的类型值,则可以生成特定格式的数据(格式固定,但值是随机的)
| 类型值 | 说明 | 示例 |
|---|---|---|
| @date | 年月日 | 2008-05-14 |
| @time | 时分秒 | 19:52:14 |
| @color | 颜色 | #a8f279 |
| @name | 英文名 | Elizabeth Brown |
| @cname | 中文名 | 叶洋 |
| @domain | 域名 | bdor.wf |
| @ip | ip | 13.226.27.93 |
| 邮箱 | i.mvxss@vstcgevu.tc | |
| @province | 省 | 江苏省 |
| @city | 市 | 无锡市 |
| @county | 县/区 | 濮阳县 |
| @paragraph | 无规则长文本(英文) | Znkgvut uspgwtqkt |
| @cparagraph | 无规则长文本(中文) | 节术该发速 |
Mock.mock('http://localhost:8080/userInfo',{
"userInfo":{
"name":'@name', // 英文名
"cname":'@cname', // 中文名
"province":'@province', // 随机的省
'city': '@city(true)', // 中国城市
"county":'@county', // 县
'color': '@color', // 16进制颜色编码
"date":'@date', // 年月日 "1993-08-15"
"time":'@time', // 时分秒 "03:34:51"
"text":'@paragraph', // 随机生成一段英文文本
"text2":'@paragraph(2)', // 随机 2句 英文文本
"ctext":'@cparagraph', // 随机生成一段中文文本
"ctext2":'@cparagraph(2)', // 随机生成 2句 中文文本
"domain":'@domain', // 随机的域名
"ip":'@ip', // 随机的ip
"email":'@email', // 随机的邮箱
}
})

Mock.js 笔记的更多相关文章
- Vue笔记:使用 mock.js 模拟数据
在我们的项目实际开发过程中,后端的接口往往是较晚才会提供出来,并且还要写接口文档,如果前端的开发都要等到接口开发完成才开始就非常影响项目整体开发进度了,mock.js 的出现使前后端分离并行开发成为可 ...
- 前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密
一.Vue-router(路由) 1.1路由创建 官网:https://router.vuejs.org/zh/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...
- 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手
<一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...
- mock.js
mock.js http://mockjs.com/ https://github.com/nuysoft/Mock/wiki 为了完成angularjs的karma测试,看到这个好东东,这货能拦截a ...
- 使用 mock.js 让前端开发与后端独立
直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 前后端分离开发——模拟数据mock.js
mock.js 生成模拟数据,拦截ajax请求 <script type="text/javascript" src="http://libs.baidu.com/ ...
- Mock.js:前后端分离开发工具
概述 Mock.js实现的功能 基于 数据模板 生成数据 基于 HTML模板 生成数据 拦截并模拟 Ajax请求 用法 浏览器: <!-- (必选)加载 Mock --> <scri ...
- mockjax MOCK.js的拦截ajax请求
今天看了下 mock.js的拦截请求 .https://github.com/nuysoft/Mock/blob/master/src/mockjax.js //覆盖(拦截) Ajax 请求,目前内置 ...
- Mock.js 与 fiddler 前端模拟数据与拦截请求
最近 工作需要 接触了Mock.js. Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试.提供了以下模拟功能: 根据数据模板生成模拟数据 模拟 Ajax ...
- mock.js 使用教程
mock.js 数据模板 #查看模板生成的数据 var data = Mock.mock({ //list|1-10 数组元素个数随机范围, id|+2 属性值递增, age|20-30数值随机范围 ...
随机推荐
- Angular 18+ 高级教程 – Memory leak, unsubscribe, onDestroy
何谓 Memory Leak? Angular 是 SPA (Single-page application) 框架,用来开发 SPA. SPA 最大的特点就是它不刷新页面,不刷新就容易造成 memo ...
- CSS – Variables
参考: Youtube – CSS Variables - CSS vs Sass - variables inside media queries Why we prefer CSS Custom ...
- HTTP——简介
HTTP
- Linux命令每天都要使用,但又太长记不住怎么办?教你1个方法
序言各位好啊,我是会编程的蜗牛,作为java开发者 ,我们肯定会与linux服务器打交道,关于linux服务器的连接工具,可以参考我的文章Tabby,一款老外都在用的 SSH工具,竟然还支持网页操作~ ...
- 树状数组 java模板(纯代码)
public class TrieNums { int n; /*Nums start from 0*/ int[] storage; /*TrieNums index start from 1*/ ...
- Python 潮流周刊#71:PyPI 应该摆脱掉它的赞助依赖(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 《Vue.js 设计与实现》读书笔记 - 第10章、双端 Diff 算法
第10章.双端 Diff 算法 10.1 双端比较的原理 上一章的移动算法并不是最优的,比如我们把 ABC 移动为 CAB,如下 A C B --> A C B 按照上一章的算法,我们遍历新的数 ...
- linux下UsbMon-WireShark之USB协议抓取分析
usbmon配置 使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko : make ARCH=arm64 CROSS_COMPILE=aarch64 ...
- 基于 Nginx 的大型互联网集群架构与实战方案
1. Nginx 负载均衡基础配置 首先,搭建一个基础的 Nginx 负载均衡器,用于将流量分发到多个后端服务器上. 步骤 1.1:安装 Nginx 在每台要作为负载均衡器的服务器上,安装 Nginx ...
- 9.23 csp
今天模拟赛出了四道zroi的题,挺GG的. T1.奇观 因为删除的边比较少,所以从m入手,f[i][j]表示长度为i,终点为j的链的方案数. C 是长度为3的链,F是 1条 长度为3 的链 和 2条 ...