语法
DTD(数据模板定义规范)
1 | // 属性名 name |
生成规则 有 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
通过重复 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 位。
1
2
3
4
5
6
7
8
9
10
11
12
13Mock.mock({
'number1|1-100.1-10': 1,
'number2|123.1-10': 1,
'number3|123.3': 1,
'number4|123.10': 1.123
})
// =>
{
"number1": 12.92,
"number2": 123.51,
"number3": 123.777,
"number4": 123.1231091814
}
属性值是布尔型 Boolean
‘name|1’: boolean
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
‘name|min-max’: value
随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。
属性值是对象 Object
‘name|count’: object
从属性值 object 中随机选取 count 个属性。
‘name|min-max’: object
从属性值 object 中随机选取 min 到 max 个属性。
属性值是数组 Array
‘name|1’: array
从属性值 array 中随机选取 1 个元素,作为最终值。
‘name|+1’: array
从属性值 array 中顺序选取 1 个元素,作为最终值。
‘name|min-max’: array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
‘name|count’: array
通过重复属性值 array 生成一个新数组,重复次数为 count。
属性值是函数 Function
‘name’: function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 ‘name’ 所在的对象。
属性值是正则表达式 RegExp
‘name’: regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
1
2
3
4
5
6
7
8
9
10
11Mock.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"
}
DPD(数据占位符定义规范)
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
1 | @占位符 |
Mock.mock()
Mock.mock( rurl?, rtype?, template|function( options ) )
- rurl:需要拦截的URL,字符串或正则
- rtype:Ajax请求类型
- template:数据模板,对象或模板
- function:响应数据的函数
- options:本请求的选项集,包含url/type/body
Mock.setup()
配置拦截 Ajax 请求时的行为。支持的配置项有:timeout。
1 | Mock.setup({ |
Mock.Random
Mock.Random 是一个工具类,用于生成各种随机数据。
1 | var Random = Mock.Random |
扩展
1 | Random.extend({ |
Basic
- Random.boolean( min?, max?, current? ) => 一个随机的布尔值
- Random.natural( min?, max? ) => 一个随机的自然数
- Random.integer( min?, max? ) => 一个随机的整数
- Random.float( min?, max?, dmin?, dmax? ) => 一个浮点数
- Random.character( pool? ) => 一个随机字符
pool: ‘lower’/ ‘upper’/‘number’/‘symbol’/字符串选项 - Random.string( pool?, min?, max? ) => 一个随机字符串
- Random.range( start, stop?, step? ) => 一个整型数组
Date
- Random.date( format? ) => 一个随机日期的字符串
- Random.time( format? ) => 一个随机时间的字符串
- Random.datetime( format? ) => 一个随机的日期和时间的字符串
- Random.now( unit?, format? ) => 当前的日期和时间字符串
Image
- Random.image( size?, background?, foreground?, format?, text? )
- Random.dataImage( size?, text? ) => 一段随机的base64编码
Color
- Random.color()
- Random.hex()
- Random.rgb()
- Random.rgba()
- Random.hsl()
Text
- Random.paragraph( min?, max? ) => 一段文本
- Random.cparagraph( min?, max? ) => 一段中文文本
- Random.sentence( min?, max? ) => 一句话
- Random.csentence( min?, max? ) => 一句中文句子
- Random.word( min?, max? ) => 几个个字母
- Random.cword( pool?, min?, max? ) => 几个汉字
- Random.title( min?, max? ) => 一句标题
- Random.ctitle( min?, max? ) => 一个中文标题
Name
- Random.first()
- Random.last()
- Random.name( middle? )
- Random.cfirst()
- Random.clast()
- Random.cname()
Web
- Random.url( protocol?, host? )
- Random.protocol()
- Random.domain()
- Random.tld() => 一个顶级域名
- Random.email( domain? ) => 随机邮箱
- Random.ip()
Address
- Random.region() => 区域(华北)
- Random.province() => 省
- Random.city( prefix? ) => 市
- Random.county( prefix? ) => 县
- Random.zip() => 邮政编码
Helper
- Random.capitalize( word ) => 首字母大写
- Random.upper( str ) => 全部大写
- Random.lower( str ) => 全部小写
- Random.pick( arr ) => 随机选取元素
- Random.shuffle( arr ) => 打乱数组
Miscellaneous
- Random.guid() => GUID
- Random.id() => 18位身份证
- Random.increment( step? ) => 全局递增整数
在Vue2项目中结合webpack4使用mock
方案
基于webpack-dev-server实现mock-serve。 通过chokidar来观察mock 文件夹内容的变化 ,并在发生变化时会清除之前注册的mock-api接口,重新动态挂载新的接口,从而支持热更新。
1 | // 参考:https://github.com/PanJiaChen/vue-element-admin/blob/master/mock/mock-server.js |