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
@email 邮箱 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 笔记的更多相关文章

  1. Vue笔记:使用 mock.js 模拟数据

    在我们的项目实际开发过程中,后端的接口往往是较晚才会提供出来,并且还要写接口文档,如果前端的开发都要等到接口开发完成才开始就非常影响项目整体开发进度了,mock.js 的出现使前后端分离并行开发成为可 ...

  2. 前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密

    一.Vue-router(路由) 1.1路由创建 官网:https://router.vuejs.org/zh/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...

  3. 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  4. mock.js

    mock.js http://mockjs.com/ https://github.com/nuysoft/Mock/wiki 为了完成angularjs的karma测试,看到这个好东东,这货能拦截a ...

  5. 使用 mock.js 让前端开发与后端独立

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  6. 前后端分离开发——模拟数据mock.js

    mock.js 生成模拟数据,拦截ajax请求 <script type="text/javascript" src="http://libs.baidu.com/ ...

  7. Mock.js:前后端分离开发工具

    概述 Mock.js实现的功能 基于 数据模板 生成数据 基于 HTML模板 生成数据 拦截并模拟 Ajax请求 用法 浏览器: <!-- (必选)加载 Mock --> <scri ...

  8. mockjax MOCK.js的拦截ajax请求

    今天看了下 mock.js的拦截请求 .https://github.com/nuysoft/Mock/blob/master/src/mockjax.js //覆盖(拦截) Ajax 请求,目前内置 ...

  9. Mock.js 与 fiddler 前端模拟数据与拦截请求

    最近 工作需要  接触了Mock.js. Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试.提供了以下模拟功能: 根据数据模板生成模拟数据 模拟 Ajax ...

  10. mock.js 使用教程

    mock.js 数据模板 #查看模板生成的数据 var data = Mock.mock({ //list|1-10 数组元素个数随机范围, id|+2 属性值递增, age|20-30数值随机范围 ...

随机推荐

  1. 普元中间件Primeton AppServer6.5安装(Windows)

    本文在Windows环境下安装普元中间件Primeton AppServer6.5(以下简称PAS) 一.安装前准备 1.1使用软件版本 Primeton_AppServer_6.5_Enterpri ...

  2. foobar2000 v2.1.5 汉化版(更新日期:2024.09.08)

    foobar2000 v2.1.5 汉化版 -----------------------[软件截图]---------------------- -----------------------[软件 ...

  3. PHP运算符优先级(摘自在线工具)

    PHP运算符优先级 结合方向 运算符 附加信息 非结合 clone new clone 和 new 左 [ array() 非结合 ++ -- 递增/递减运算符 非结合 ~ - (int) (floa ...

  4. 14 Positional Encoding (为什么 Self-Attention 需要位置编码)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  5. kotlin更多语言结构——>解构声明

    解构声明 有时把一个对象 解构 成很多变量会很方便,例如: val (name, age) = person 这种语法称为 解构声明 .一个解构声明同时创建多个变量.我们已经声明了两个新变量:name ...

  6. 使用svn保存markdown文档

    使用svn管理md文档时,使用谷歌直接访问出现中文乱码,解析格式错误的问题,可以通过安装谷歌浏览器的插件解决. 一.解决格式解析错误的问题 安装插件 Markdown Preview Plus ,安装 ...

  7. SaaS架构:中央库存系统架构设计

    大家好,我是汤师爷~ 近年来,越来越多的零售企业大力发展全渠道业务.在销售额增长上,通过线上的小程序.直播.平台渠道等方式,拓展流量变现渠道.在会员增长方面,通过多样的互动方式,全渠道触达消费者,扩大 ...

  8. DIY Matter Bridge 和智能锁简单联动的实践

    一. 写在前面 在之前的博客文章 <基于乐鑫 ESP32-C3 的 Matter Light 实践>中,我们利用乐鑫的硬件和 SDK 方案实现了简单的 Light 例程,并对 Matter ...

  9. 华为云-容器引擎CCE-基本概念

    云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的.高性能的企业级Kubernetes集群,支持运行Docker容器.借助云容器引擎,您可以在华为云上轻松部署.管理 ...

  10. 字符串、列表、元组、字典(python)

    文章目录 1.python字符串 1.1 python访问字符串中的值 1.2Python 字符串连接 1.3Python字符串运算符 2.python列表 2.1访问列表中的值 2.2更新列表 2. ...