Mock.mock({
"results|10": [
{
"id|+1": 10,
province: {
"id|111-999.1": 1112.4,
name: "@province",
},
city: {
"id|1111-9999": 1234,
name: "@city",
},
"allow_split|1-2": true,
fun1: () => {
return [1, 2, 3];
},
regexp1: /\d{5,10}/,
first: "@FIRST",
last: "@last",
full: "@last @first",
},
],
});
一、数据模板定义规范(Data Template Definition,DTD)
说明:
name:属性名,生成规则:rule(可选),属性值:value
格式:'name|rule':value
生成规则的含义依赖属性值的类型,这里的生成是按规则随机生成。
1.属性值是字符串String,通过重复 string 生成一个字符串
-
'name|min-max':string
重复次数大于等于min,小于等于max。即取值区间为[min,max] -
'name|count':string
重复次数为count
2.属性值是数字Number
-
'name|+1':number
属性值自增1,初始值是number。
'id|+1':0
//id从0开始自增1
-
'name|min-max':number
生成一个整数,取值区间为[min,max]。number只是用来确定类型。 -
'name|min-max.dmin-dmax':number
生成一个浮点数,整数部分取值区间为[min-max],小数部分保留dmin到dmax位。小数点后只有一个数n的话,就保留n位小数。
Mock.mock({
'num1|50-100.1-3':1,
'num2|100.3':1,
'num3|60-70.3':1.23
})
//=>
{
"num1":57.56,//保留1-3位小数
"num2":100.666//保留三位小数
"num3": 69.235//从23开始保留3位小数
}
3.属性值是Boolean类型
-
'name|1': boolean
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。 -
'name|min-max':value
随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。
4.属性值是对象Object
-
'name|count':object
从属性值object中随机选取count个属性 -
'name|min-max':object
从属性值object中选取min到max个属性
5.属性值是数组Array
-
'name|1':array
从array中随机选取1个元素,作为最终值。 -
'name|+1':array
从属性值 array 中顺序选取 1 个元素,作为最终值。 -
'name|min-max'|array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。 -
'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 count。
6.属性值是函数Function
-
'name':function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 ‘name’ 所在的对象。
7.属性值是正则表达式RegExp
-
'name':regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
Mock.mock({
'regexp1': /[a-z][A-Z][0-9]/,
'regexp2': /\w\W\s\S\d\D/,
'regexp3': /\d{5,10}/
})
// =>
{
"regexp1": "pJ7",
"regexp2": "F)\fp1G",
"regexp3": "561659409"
}
二、数据占位符定义规范 (Data Placeholder Definition,DPD)
占位符只是在属性值字符串中占个位置,并不出现在最终的属性值中。
占位符的格式为:
@占位符 或 @占位符(参数 [, 参数])
注意:
- 用 @ 来标识其后的字符串是 占位符。
- 占位符 引用的是 Mock.Random 中的方法。
- 通过 Mock.Random.extend() 来扩展自定义占位符。
- 占位符 会优先引用 数据模板 中的属性。
- 占位符 支持 相对路径 和 绝对路径。
Mock.mock({
name: {
first: '@FIRST',
middle: '@FIRST',
last: '@LAST',
full: '@first @middle @last'
}
})
// =>
{
"name": {
"first": "Charles",
"middle": "Brenda",
"last": "Lopez",
"full": "Charles Brenda Lopez"
}
}
例子链接:http://mockjs.com/examples.html
该网址特别全面,各种使用方法及扩展,这里不再复述。
网友评论