Mock.js 的语法规范包括两部分:
(1)数据模板定义规范(Data Template Definition,DTD);
(2)数据占位符定义规范(Data Placeholder Definition,DPD)。
数据模板中的每个属性由三部分构成:属性名、生成规则、属性值。
// 属性名 name
// 生成规则 rule
// 属性值 value
'name|rule': value
属性名和生成规则之间用竖线|分隔。生成规则是可选的。生成规则有7种格式:
(1)'name|min-max': value
(2)'name|count': value
(3)'name|min-max.dmin-dmax': value
(4)'name|min-max.dcount': value
(5)'name|count.dmin-dmax': value
(6)'name|count.dcount': value
(7)'name|+step': value
生成规则的含义需要依赖属性值的类型才能确定。属性值中可以含有@占位符。属性值还指定了最终值的初始值和类型。
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
通过重复生成一个字符串,重复次数大约等于min,小于等于max。
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'id': 1,
'name|2-4':'测试',//'name|min-max': string写法
'phone|11':'1'
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
2、属性值是数字number
(1)'name|+1': number
属性值自动加 1,初始值为 number。
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'id|+1': 1,//属性值自动加1
'name|2-3':'测试',
'phone|11':'1'
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
(2)'name|min-max': number
生成一个大于等于min、小于等于max的整数,属性值number只是用来确定类型。
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'id|+1': 1,
'name|2-3':'测试',
'phone|11':'1',
'point|122-500':0 //数值生成一个范围
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
(3)'name|min-max.dcount': value 生成一个浮点数,整数部分大于等于 min、小于等于max,小数部分为dcount位
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'id|+1': 1,
'name|2-3':'测试',
'phone|11':'1',
'point|122-500':0,
'money|3000-8000.2':0//生成一个范围,且点.后面2表示2位小数
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
(4)'name|min-max.dmin-dmax': number
生成一个浮点数,整数部分大于等于min、小于等于 max,小数部分保留dmin到dmax位。
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'id|+1': 1,
'name|2-3':'测试',
'phone|11':'1',
'point|122-500':0,
'money|3000-8000.2':0,
'money2|1000-5000.2-4':0,//整数在1000-5000范围内,小数在2位到4位之间
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
3、属性值是布尔
(1)'name|1': boolean
随机生成一个布尔值,值为true的概率是 1/2,值为false的概率同样是1/2
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'id|+1': 1,
'name|2-3':'测试',
'phone|11':'1',
'point|122-500':0,
'money|3000-8000.2':0,
'status|1':true//生成一个布尔类型
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
(2)'name|min-max': value
随机生成一个布尔值,值为valu 的概率是 min/(min + max)
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'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//随机生成一个布尔值
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
4、属性值是Object
(1)'name|count': object
从属性值object中随机选取count个属性。
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'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':{'id':1,'date':'2005-01-01','content':'记录'}
}]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
(2)'name|min-max': object
从属性值object中随机选取 min到 max个属性
// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
'list|5': [{
'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))
5、属性值是数组
(1)'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 count
(2)'name|min-max': array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
// 使用 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))