一:概念

Mock.js是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

  • 根据数据模板生成模拟数据
  • 模拟 Ajax 请求,生成并返回模拟数据
  • 基于 HTML 模板生成模拟数据

官网: http://mockjs.com/

二:安装

cnpm install mockjs

三:数据模板定义规范DTD

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值

// 属性名 name

// 生成规则 rule

// 属性值 value

'name|rule': value

属性名 和 生成规则 之间用竖线 | 分隔。生成规则 是可选的。生成规则 有 7 种格式:

'name|min-max': value

'name|count': value

'name|min-max.dmin-dmax': value

'name|min-max.dcount': value

'name|count.dmin-dmax': value

'name|count.dcount': value

'name|+step': value

生成规则的含义需要依赖属性值的类型才能确定。属性值 中可以含有 @占位符。属性值 还指定了最终值的初始值和类型.

// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5‐10': [{
'id|+1': 1,
'name|2‐3':'测试',
'phone|11':'1',
'point|122‐500':0,
'money|3000‐8000.2':0,
'status|1':true,
'default|1‐3':true,
'detail|2‐3':{'id':1,'date':'2005‐01‐01','content':'记录'}
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))

1.属性值是string

'name|count': string: 'phone|11':'1'

通过重复 string 生成一个字符串,重复次数等于 count

'name|min-max': string: 'name|2‐4':'测试'

通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max

2.属性值是number

'name|+1': number: 'id|+1': 1

属性值自动加 1,初始值为 number

'name|min-max': number: 'point|122‐500':0

生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型

'name|min-max.dcount': value : 'money|3000‐8000.2':0

生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分为dcount位

'name|min-max.dmin-dmax': number: 'money2|1000‐5000.2‐4':0

生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到dmax 位

3.属性值是boolean

'name|1': boolean : 'status|1':true

随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2

'name|min-max': value : 'default|1‐3':true

随机生成一个布尔值,值为 value 的概率是 min / (min + max)

4.属性值是Object

'name|count': object : 'detail|2':{'id':1,'date':'2005‐01‐01','content':'记录'}

从属性值 object 中随机选取 count 个属性

'name|min-max': object : 'detail|2‐3':{'id':1,'date':'2005‐01‐01','content':'记录'}

从属性值 object 中随机选取 min 到 max 个属性

5.属性值是array

'name|count': array

通过重复属性值 array 生成一个新数组,重复次数为 count

'name|min-max': array : 'list|5‐10': [{...}]

通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max

四:数据占位符定义规范DPD

Mock.Random 是一个工具类,用于生成各种随机数据。Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) 。内置方法列表:

Basic: boolean,natural,integer,float,character,string,range,date,time,datetime,now

Image: image, dataImage

Color: color

Text: paragraph, sentence, word, title, cparagraph, csentence,cword, ctitle

Name: first, last, name, cfirst, clast, cname

Web: url, domain, email, ip, tld

Address: area, region,county

Helper: capitalize, upper, lower, pick, shuffle

Miscellaneous: guid, id

示例:

// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|10': [{
'id|+1': 1,
'name':'@cname',
'ename':'@last',
'cfirst':'@cfirst',
'point':'@integer',
'birthday':'@date',
'pic':'@image',
'title':'@title',
'content':'@cword(100)',
'url':"@url",
'ip':"@ip",
'email':"@email",
'area':'@region',
'address':'@county(true)'
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))

1.基本方法

string 字符串: 'name':'@string'

integer 整数: 'point':'@integer'

date 日期: 'birthday':'@date'

可以生成随机的基本数据类型

2.图像方法

'pic':'@image'

image 随机生成图片地址

3.文本方法

@title: 标题 : 'title':'@title'

@cword(100) :文本内容 参数为字数 : 'content':'@cword(100)'

4.名称方法

cname :中文名称 : 'name':'@cname'

cfirst:中文姓氏 : 'cfirst':'@cfirst'

Last:英文姓氏 : 'ename':'@last'

5.网络方法

可以生成url ip email等网络相关信息

'url':"@url"

'ip':"@ip"

'email':"@email"

5.地址方法

@region 区域 : 'area':'@region'

@county 省市县 : 'address':'@county(true)'

mock.js的运用的更多相关文章

  1. mock.js

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

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

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

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

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

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

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

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

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

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

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

  7. mock.js 使用教程

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

  8. MOCK.JS 生成随机数据,拦截 Ajax 请求

    mock.js 的用处 前后端分离 :让前端攻城师独立于后端进行开发. 增加单元测试的真实性 :通过随机数据,模拟各种场景. 开发无侵入 :不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响 ...

  9. dva框架使用mock.js模拟数据 + fetch请求数据

    what DVA? Dva是基于Redux做了一层封装,对于React的state管理,有很多方案,我选择了轻量.简单的Dva. dva 可以很方便就使用mock.js进行数据的模拟. 只需要三步,即 ...

  10. 【mock.js】后端不来过夜半,闲敲mock落灯花 ——南宋·赵师秀

      mock的由来[假]   赵师秀:南宋时期的一位前端工程师 诗词背景:在一个梅雨纷纷的夜晚,正值产品上线的紧张时期,书童却带来消息:写后端的李秀才在几个时辰前就赶往临安度假去了,  赵师秀非常生气 ...

随机推荐

  1. SpringBoot框架(3)--条件装配

    场景:需要根据系统的编码格式有选择装配类. 分析:最直接的实现方式,定义各种编码格式对应的处理类,可以通过System.getProperty("file.encoding")获得 ...

  2. re模块和正则

    正则表达式:就是用来筛选字符串中特定内容的一串具有某种逻辑规则的字符组成.正则表达式不是Python独有的,而是一门独立的技术,它在所有的编程语言中都有使用,在Python中使用就必须依赖于re模块. ...

  3. Python 3标准库第一天讲解总结

    一.很多知识自己没有理解透: 二.课件准备不足: 三.第一次讲解有点紧张: 四.口才也不是很好,很多有断片的情况: 五.SB式的坚持:

  4. AJAX - 向服务器发送请求请求

    AJAX - 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据.直线电机生产厂家 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 ...

  5. (79)【按键】[独立按键] - 1: 单击,双击,三击以及N击

    此按键程序的实现的功能是单个独立按键的[单击],[长按],[双击],[三击]以及[多击].本文分为三个部分, 第一个部分是说[单击],[长按]的程序: 第二部分是讲[双击]: 第三部分是讲[三击],[ ...

  6. python相关遗漏知识点补充

    python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...

  7. Word2Vec模型参数 详解

    用gensim函数库训练Word2Vec模型有很多配置参数.这里对gensim文档的Word2Vec函数的参数说明进行翻译,以便不时之需. class gensim.models.word2vec.W ...

  8. 关于ajax请求controller返回中文乱码的解决方法!

    问题描述:前台ajax请求 Spring框架的 controller 返回的本应该是一段中文字符串 ,结果返回了一串 ?????? 解决办法:在RequestMapping的属性中添加返回数据类型属性 ...

  9. Python 笔试集(1):关于 Python 链式赋值的坑

    前言 Python 的链式赋值是一种简易型批量赋值语句,一行代码即可为多个变量同时进行赋值. 例如: x = y = z = 1 链式赋值是一种非常优雅的赋值方式,简单.高效且实用.但同时它也是一个危 ...

  10. 阶段3 1.Mybatis_08.动态SQL_03.mybatis中动态sql语句-foreach和sql标签

    foreach标签 in的查询 sql语句好写,但是传参在映射文件里面改怎么传呢 定义一个List<Integer>成员变量,然后生成get和set 定义一个新的查询方法 open:开始符 ...