MOCKjs

语法规范

  • 数据模版定义规范 DTD
  • 数据占位符定义规范 DPD

DTD

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

‘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

生成规则的含义需要依赖属性值的类型才能确定

属性值中可以含有@占位符
属性值还指定了最终值的初始值和类型

属性值是字符串String

‘name|min-max’: string // 通过重复string生成一个字符串,重复次数大于等于min,小于等于max

‘name|count’: string // 生成一个字符串,重复次数等于count

Number

‘name|+1’: number // 属性值自动加1,初始值为number

‘name|min-max’: number //生成一个大于等于min,小于等于max的整数,属性值number只是用来确定类型

‘name|min-max.dmin-dmax’: number // 生成一个浮点数,整数部分大于等于min、小于等于max,小数部分保留dmin到dmax位

Mock.mock({
    'number1|1-100': 1,
    'number2|123.1-10': 1,
    'number3|123.3': 1,
    'number4|123.10': 1.23
})

// => 

{
  number1: 34,
  number2: 123.3291431,
  number3: 123.132,
  number4: 123.2312349612
}

Boolean

‘name|1’: boolean // 随机生成一个布尔值,值为true的概率是1/2

‘name|min-max’: value // 随机生成一个布尔值,值为value的概率是min/(min + max)

Mock.mock({
    'boolean1|1': true,
    'boolean2|1-3': false
})

// => 


{ boolean1: true, boolean2: true }

Object

‘name|count’: object // 从属性object中随机选取count个属性

‘name|min-max’: object // 从属性值object中随机选取min到max个属性

Mock.mock({
    'obj|5': {
        name: 'xiaoyu',
        age: 20,
        sex: 'man',
        school: 'buaa',
        year: 2020
    }
})

// =>

{
  obj: {
              name: 'xiaoyu', 
              sex: 'man', 
              age: 20, 
              year: 2020, 
              school: 'buaa' 
          }
}

Array

‘name|1’: array // 从属性array中随机选取1个元素,作为最终值

‘name|+1’: array // 从属性array中顺序选取1个元素,作为最终值

‘name|min-max’: array // 通过重复属性值array生成一个新数组,重复次数大于等于min,小于等于max

‘name|count’: array // 通过重复属性值array生成一个新数组,重复次数为count

DPD

占位符只是在属性值字符串中占个位置,并不出现在最终的属性值中

占位符的格式为:

@占位符
@占位符(参数 [,参数])