【mock】数据模板定义规范DTD 数据占位符定义规范DPD
2.2.4、数据模板定义规范DTD
数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值
属性名 和 生成规则 之间用竖线 | 分隔。 生成规则 是可选的。 生成规则 有 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 id
生成规则的含义需要依赖属性值的类型才能确定。 属性值 中可以含有 @占位符。 属性值 还指定了最终值的初始值和类型
2.2.4.1属性值是字符串
(1)‘name|count’: string 通过重复 string 生成一个字符串,重复次数等于 count
// 使用 Mock let Mock = require(mockjs) let data = Mock.mock({ list|5: [{ id: 1, name:测试, phone|11:1 }] }) // 输出结果 console.log(JSON.stringify(data,null,2))
(2)‘name|min-max’: string 通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max
// 使用 Mock let Mock = require(mockjs) let data = Mock.mock({ list|5: [{ id: 1, name|2‐4:测试, phone|11:1 }] }) // 输出结果 console.log(JSON.stringify(data,null,2))
2.2.4.2 属性值是number
(1)‘name|+1’: number 属性值自动加 1,初始值为 number。 (2)‘name|min-max’: number 生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型 (3)‘name|min-max.dcount’: value 生成一个浮点数,整数部分大于等于 min、小 于等于 max,小数部分为dcount位 (4)‘name|min-max.dmin-dmax’: number 生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。
2.2.4.3 属性值是布尔
(1)‘name|1’: boolean 随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2 (2)‘name|min-max’: value 随机生成一个布尔值,值为 value 的概率是 min / (min + max)
2.2.4.4 属性值是Object
(1)‘name|count’: object 从属性值 object 中随机选取 count 个属性。
(2)‘name|min-max’: object 从属性值 object 中随机选取 min 到 max 个属性
2.4.4.5 属性值是数组
(1)‘name|count’: array 通过重复属性值 array 生成一个新数组,重复次数为 count (2)‘name|min-max’: array 通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
2.2.5、数据占位符定义规范DPD
2.2.5.1 基本方法
可以生成随机的基本数据类型 string 字符串 integer 整数 date 日期 2.2.5.1 图像方法 image 随机生成图片地址
2.2.5.1 文本方法
@title: 标题 @cword(100) :文本内容 参数为字数
2.2.5.1 名称方法
cname :中文名称 cfirst:中文姓氏 Last:英文姓氏
2.2.5.1 网络方法
可以生成url ip email等网络相关信息
2.2.5.1 地址方法 @region 区域 @county 省市县 2.2.6、Crud数据模拟 https://www.jianshu.com/p/7674c285a0d8
import Mock from mockjs // 引入mock var dataList = [] for (var i = 0; i < 15; i++) { dataList.push(Mock.mock({ id: @increment, name: @cname, phone: /^1[0-9]{10}$/, email: @email, address: @county(true), createTime: @date("yyyy-MM-dd") })) } function pagination(index, size, list) { console.log(list); console.log(index, size); return list.slice((index-1)*size, index*size) } // 获取用户列表 Mock.mock(new RegExp(/user/list), post, (opts) => { var list =dataList; console.log(opts.body) var index = JSON.parse(opts.body).page; var size = 10; var total = list.length list = pagination(index, size, list) return { total: total, data: list } })