Mock.js篇2:数据模板定义规范DTD

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))

猜你喜欢

转载自blog.csdn.net/u013089490/article/details/84938551