当前位置: 代码迷 >> 综合 >> mock.js语法规范_篇2
  详细解决方案

mock.js语法规范_篇2

热度:18   发布时间:2023-12-12 03:03:48.0

语法规范

Mock.js 的语法规范包括两部分

  1. 数据模板定义规范(Data Template Definition, DTD)
  2. 数据占位符定义规范(Data Placeholder Definition, DPD)

一、数据模板定义规范 DTD

数据模板中的每个属性由3部分组成:属性名、生成规则、属性值

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
  • 生成规则的含义需要依赖属性值的类型才能确定
  • 属性值中可以含有 @占位符
  • 属性值还指定了最终值的初始值和类型

生成规则和示例

1.属性值是字符串 String

'name|min-max': string

通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max

'name|count': string

通过重复 string 生成一个字符串,重复次数等于 count

2.属性值是数字 Number

'name|+1': number

属性值自动加1,初始值为 number

'name|min-max': number

生成一个大于等于 min,小于等于max,属性值 number 只是用来确定类型

'name|min-max.dmin-dmax': number
// 如
Mock.mock({
    'number1|1-100.1-10':1,'number2|123.1-10':1
})
->
{
    'number1':12.92'number2:123.51
}

生成一个浮点数,整数部分大于等于min,小于等于max,小数部分保留 dmindmax

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 中随机选取 minmax 个属性

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': /\d{5, 10}/
})
->
{
    'regexp1': 'pJ7','regexp2': '565342'
}

二、数据占位符定义规范 DPD

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

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

注意

  • @ 来标识其后的字符串是 占位符
  • 占位符引用的是 Mock.Random 中的方法
  • 通过 Mock.Random.extend() 来扩展自定义占位符
  • 占位符也可以引用 数据模板 中的属性
  • 占位符会优先引用 数据模板 中的属性
  • 占位符 支持 相对路径 和 绝对路径
Mock.mock({
    name: {
    first: '@FIRST',middle: '@FIRST',last: '@LAST',full: '@fist @middle @last',}
})
->
{
    'name': {
    "first": "Charles","middle": "Brenda","last": "Lopez","full": "Charles Brenda Lopez"}
}