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. 以太坊Rollup方案之 arbitrum(2)

    上一期简单介绍了一下rollup的一些基本内容以及aritrun交易的执行流程,这一期将介绍一下aritrum的核心技术 -- 交互式单步证明 这一期主要涉及到的是arbitrum的验证节点 arbi ...

  2. Rust字符串类型全解析

    字符串是每种编程语言都绕不开的类型, 不过,在Rust中,你会看到远比其他语言更加丰富多样的字符串类型. 如下图: 为什么Rust中需要这么多种表示字符串的类型呢? 初学Rust时,可能无法理解为什么 ...

  3. 对 LLM 工具使用进行统一

    我们为 LLM 确立了一个跨模型的 统一工具调用 API.有了它,你就可以在不同的模型上使用相同的代码,在 Mistral.Cohere.NousResearch 或 Llama 等模型间自由切换,而 ...

  4. [namespace hdk] modint

    template<long long mod=INT_MAX,typename T0=long long> class modint{ private: T0 x; long long p ...

  5. HDK Include Header File (1.7)

    Download 1.7 | 1.7.1 | 1.7.2 1.7.1 使用方法:编译选项->目录->C++包含文件->添加 [解压目录]\include 1.7.2 使用方法:编译选 ...

  6. 封装 axios 拦截器

    import axios from "axios"; // 自定义一个 request 实例 const request = axios.create({ baseURL: &qu ...

  7. 25. http 常见状态码

    状态码的分类: 2xx:表明请求被成功接收并处理 : 3xx:表示要完成请求,需要进一步操作. 通常,这些状态代码用来重定向 :重定向就是 从 a 地址跳转到 b 地址 : 4xx:客户端错误,请求错 ...

  8. MongoDB安装及配置Navicat MongoDB Tools

    一.下载MongoDB 1.下载网址:https://www.mongodb.com/try/download/community 注:本文档以Windows和msi安装为例 二.安装MongoDB ...

  9. 从2s优化到0.1s,我用了这5步

    前言 分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中. 但就是这样一个简单的分类树查询功能,我们却优化了5次. 到底是怎么回事呢? 背景 我们的网站使用了SpringBoot推荐的 ...

  10. KubeSphere 社区双周报| 2024.08.30-09.12

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...