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
    1)'name|min-max': string
    通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。
    2)'name|count': string
    通过重复 string 生成一个字符串,重复次数等于 count。

  2. 属性值是数字Number
    1)'name|+1': number 【easy-mock不生效】
    属性值自动加 1,初始值为 number。
    2)'name|min-max': number
    生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。
    3)'name|min-max.dmin-dmax': number
    生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。

3.属性值是布尔型Boolean
1)'name|1': boolean
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
2)'name|min-max': value
随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)

4.属性值是对象Object
1)'name|count': object
从属性值 object 中随机选取 count 个属性。
2) 'name|min-max': object
从属性值 object 中随机选取 min 到 max 个属性。

     "object|2": {
        "310000": "上海市",
        "320000": "江苏省",
        "330000": "浙江省"
      },
    }

5.属性值是数组Array
1) 'name|1': array
从属性值 array 中随机选取 1 个元素,作为最终值。
2)'name|+1': array
从属性值 array 中顺序选取 1 个元素,作为最终值。 【easy-mock不生效】
3)'name|min-max': array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
4)'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 count。

      'number1|1': [1, 2, 3, 4],
      'number2|3': [1, 2, 3, 4],
      'number3|+1': [1, 2, 3, 4],
      'number4|2-3': [1, 2, 3, 4],

6.属性值是函数Function
1) 'name': function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。

7.属性值是正则表达式RegExp
1)'name': regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。

      'number': /[a-z][A-Z][0-9]/,

数据占位符定义DPD

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


占位符方法

Basic

1)boolean:boolean( min, max, current )或boolean()
指示参数 current 出现的概率。概率计算公式为 min / (min + max)。该参数的默认值为 1,即有 50% 的概率返回参数 current。

"name_1": "@boolean(10,90,true)",
"name_2": "@boolean",
"name_3": "@boolean()"

2)natural:natural( min, max )或natural( min )或natural()
返回一个随机的自然数(大于等于 0 的整数)。
3)integer:integer( min, max )或integer( min )或integer()
返回一个随机的整数。
4)float:float()或float( min )或float( min, max )或float( min, max, dmin )或float( min, max, dmin, dmax ) 其中,dmax默认值是17
返回一个随机的浮点数。

"name_1": "@float(1,100,1,2)",
"name_2": "@float(1,100,1)"

5)character:character()或character( 'lower/upper/number/symbol' )或character( pool )
返回一个随机字符。
内置字符池:
{
lower: "abcdefghijklmnopqrstuvwxyz",
upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
number: "0123456789",
symbol: "!@#$%^&*()[]"
}

 "name_1": "@character(pool)",
 "name_2": "@character('lower')",
 "name_3": "@character('aeiou')",

6)string:string()或string( length )或string( pool, length )或string( min, max )或string( pool, min, max )
返回一个随机字符串。默认最大长度max=7。
内置字符池与character提及到的一样.

      "name_1": "@string()",
      "name_2": "@string(5)",
      "name_3": "@string('lower',4)",
      "name_4": "@string('壹贰叁肆伍陆柒捌玖拾',1,4)",

7)range:range( start )或range( start, stop )或range( start, stop, step )
返回一个整型数组。包含起始值,不包含结束值。

      "name_1": "@range(1)",
      "name_2": "@range(1,5)",
      "name_3": "@range(1,5,2)",

8)date:date()或date(format)
返回一个随机的日期字符串。默认格式为 yyyy-MM-dd

      "name_1": "@date()",
      "name_2": "@date('yyyy-MM-dd')",
      "name_3": "@date('yyyy-MM-dd HH:mm:ss A')",
format

9)time:time()或time( format )
返回一个随机的时间字符串。默认格式为 HH:mm:ss
10)datetime:datetime()或datetime( format )
返回一个随机的日期和时间字符串。默认格式为 yyyy-MM-dd HH:mm:ss
11)now:now()或now( format )或now( unit )或now( unit, format )
返回当前的日期和时间字符串。默认格式为 yyyy-MM-dd HH:mm:ss
unit包含:'year'、'month'、'day'、'week'、'hour'、'minute'、'second'

      "name_1": "@now()",
      "name_2": "@now('yyyy-MM-dd')",
      "name_3": "@now('yyyy-MM-dd HH:mm:ss A')",
      "name_4": "@now('second')",

image

1)image:image()或image( size )或image( size, background )或image( size, background, text )或image( size, background, foreground, text )或image( size, background, foreground, format, text )
生成一个随机的图片地址
2)dataImage:dataImage()或dataImage( size )或dataImage( size, text )
生成一段随机的 Base64 图片编码。

Text

1)paragraph:paragraph()或paragraph( len )或paragraph( min, max )。默认值是3到7之间的随机数。
随机生成一段文本
2)cparagraph:cparagraph()或cparagraph( len )或cparagraph( min, max )
随机生成一段中文文本
3)sentence:sentence()或sentence( len )或sentence( min, max )。默认长度是12到18.
随机生成一个句子,第一个单词的首字母大写。
4)csentence:csentence()或csentence( len )或csentence( min, max )
随机生成一段中文文本。
5)word:word()或word( len )或word( min, max )。默认长度是3到10
随机生成一个单词(随机的小写字母)。
6)cword:cword()或.cword( pool )或cword( length )或cword( pool, length )或cword( min, max )或cword( pool, min, max )。默认长度是1个汉字。
随机生成一个汉字。
7)title:title()或title( len )或title( min, max )。默认长度是3到7。
随机生成一句标题,其中每个单词的首字母大写。
8)ctitle:ctitle()或ctitle( len )或ctitle( min, max )。默认长度是3到7。
随机生成一句中文标题。

Name

first() 随机生成一个常见的英文名。
last() 随机生成一个常见的英文姓。
name() 随机生成一个常见的英文姓名
name(true) 随机生成一个常见的英文姓名(包含中间名。。false:不包含中间名)
cfirst() 随机生成一个常见的中文名。
clast() 随机生成一个常见的中文姓。
cname() 随机生成一个常见的中文姓名。

      "name_1": "@name()",
      "name_2": "@name(true)",
      "name_3": "@first()",
      "name_4": "@last()",
      "name_5": "@cfirst()",
      "name_6": "@clast()",
      "name_7": "@cname()",

Web

url():随机生成一个 URL。
url( protocol, host ):随机生成一个 URL,并指定 URL 域名和端口号。【easy-mock中不生效】
protocol():随机生成一个 URL 协议。返回以下值之一:'http'、'ftp'、'gopher'、'mailto'、'mid'、'cid'、'news'、'nntp'、'prospero'、'telnet'、'rlogin'、'tn3270'、'wais'。
domain():随机生成一个域名。
tld():随机生成一个顶级域名。
email():随机生成一个邮件地址。
email( domain ):指定邮件地址的域名。【easy-mock中不生效】
ip():随机生成一个 IP 地址。

      "name_1": "@url('http', 'nuysoft.com')",
      "name_2": "@protocol()",
      "name_3": "@domain()",
      "name_4": "@tld()",
      "name_5": "@email()",
      "name_6": "@email('nuysoft.com')",
      "name_7": "@ip()",

示例

{
  "success": true,
  "data": {
    "projects|3-10": [{
      "name": "@boolean(10,90,true)",
      "url": "@url",
      "email": "@email",
      "address": "@county(true)",
      "string|1-10": "★",
      "number|1-100": 100,
      "boolean|1-2": true,
      "object|2": {
        "310000": "上海市",
        "320000": "江苏省",
        "330000": "浙江省"
      },
    }]
  }
}

Address

region():随机生成一个(中国)大区。
province():随机生成一个(中国)省(或直辖市、自治区、特别行政区)。
city():随机生成一个(中国)市。
city( true|false ):指示是否生成所属的省。true-返回格式:"安徽省 宣城市"。
county():随机生成一个(中国)县。
county( true|false ):指示是否生成所属的省、市。
zip():随机生成一个邮政编码(六位数字)。

Helper

      "name_1": "@capitalize('hello')",  把字符串的第一个字母转换为大写。
      "name_2": "@upper('hello')",   把字符串转换为大写。
      "name_3": "@lower( 'hello' )", 把字符串转换为小写。
      "name_4": "@pick(['a', 'e', 'i', 'o', 'u'])", 从数组中随机选取一个元素,并返回。
      "name_5": "@shuffle(['a', 'e', 'i', 'o', 'u'])", 打乱数组中元素的顺序,并返回。

Miscellaneous

      "name_1": "@guid()", 随机生成一个 GUID。格式:"name_1": "94f9C233-d80b-A0DD-cd64-E9249fD4C90d",
      "name_2": "@id()", 随机生成一个 18 位身份证。
      "name_3": "@increment()", 生成一个全局的自增整数。 格式:"name_3": 214,
      "name_4": "@increment(2)", 生成一个全局的自增整数,步数为2。 格式:"name_4": 216,
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容