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. JavaScript Library – PhotoSwipe

    效果 前言 以前用过 lightbox2 和 fancyapps. lightbox2 已经没有维护了. fancyapps 改版好多次了. v2, v3 现在 v4 已经开始收费了. PhotoSw ...

  2. ASP.NET Core Library – ImageSharp

    前言 2021 年就写过一篇了, Asp.net core 学习笔记 Image processing (ImageSharp), 只是那时还是旧的写法, 这篇作为翻新和以后继续增加新功能的介绍. I ...

  3. Tomcat——IDEA中创建 Maven Web 项目

    IDEA中创建 Maven Web 项目    首先创建一个新的空项目        1.使用骨架      新建模块-找到如下骨架-创建              删除pom.xml中多余的坐标   ...

  4. Flutter Forward 活动正式发布

    2023 年 1 月 25 日,Flutter 团队将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播,敬请期待! 活动将于北京时间 1 月 25 日 22:30 开始 ...

  5. 【赵渝强老师】使用kubeadmin部署K8s集群

    首先,我们来看一下整体的架构. K8s的部署方式: yum方式部署 二进制包:手动使用tar包来部署 minikube:单机版,用于开发测试. kubeadm:可以把kubeadmin看成一个部署工具 ...

  6. Android Qcom USB Driver学习(一)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) USB接口类型 Android终端上常用的USB接口:TypeC(现在的主流),MicroB(以前的设备) ...

  7. Android dtbo(1) dto简介

    设备树 (DT, Device Tree) 是用于描述 non-discoverable(google这样写的,意思应该就是硬件信息看不到) 硬件的命名节点和属性构成的一种数据结构.操作系统(例如在 ...

  8. 云原生周刊:Artifact Hub 成为 CNCF 孵化项目|2024.9.23

    开源项目推荐 Coroot Coroot 是一个开源监控工具,旨在为云原生应用提供可观察性.它通过整合指标.日志和追踪信息,专注于提供应用性能的洞察. DirectPV DirectPV 是一个开源项 ...

  9. 云原生爱好者周刊:Grafana Loki 免费电子书

    云原生一周动态要闻: Apache Log4j 2.17.1 修复远程代码执行漏洞 CNCF 发布 2021 年度报告 极狐(GitLab)发布业内首款"GitNative" De ...

  10. Eclipse中缓存清理

    (1)点击tomcat服务器,右键"clean-": (2)删除servers的tomcat服务器下的项目: 控制台显示"Servers窗口":菜单栏--Win ...