mock.js使用

語(yǔ)法規(guī)范

包含兩部分:
1)數(shù)據(jù)模板定義規(guī)范(Data Template Definition,DTD)
2)數(shù)據(jù)占位符定義規(guī)范(Data Placeholder Definition,DPD)

數(shù)據(jù)模板定義規(guī)范-DTD

數(shù)據(jù)模板鐘的每個(gè)屬性由3部分構(gòu)成:屬性名(name),生成規(guī)則(rule)、屬性值(value),'name|rule': value
生成規(guī)則由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
    通過(guò)重復(fù) string 生成一個(gè)字符串,重復(fù)次數(shù)大于等于 min,小于等于 max。
    2)'name|count': string
    通過(guò)重復(fù) string 生成一個(gè)字符串,重復(fù)次數(shù)等于 count。

  2. 屬性值是數(shù)字Number
    1)'name|+1': number 【easy-mock不生效】
    屬性值自動(dòng)加 1,初始值為 number。
    2)'name|min-max': number
    生成一個(gè)大于等于 min、小于等于 max 的整數(shù),屬性值 number 只是用來(lái)確定類(lèi)型。
    3)'name|min-max.dmin-dmax': number
    生成一個(gè)浮點(diǎn)數(shù),整數(shù)部分大于等于 min、小于等于 max,小數(shù)部分保留 dmin 到 dmax 位。

3.屬性值是布爾型Boolean
1)'name|1': boolean
隨機(jī)生成一個(gè)布爾值,值為 true 的概率是 1/2,值為 false 的概率同樣是 1/2。
2)'name|min-max': value
隨機(jī)生成一個(gè)布爾值,值為 value 的概率是 min / (min + max),值為 !value 的概率是 max / (min + max)

4.屬性值是對(duì)象Object
1)'name|count': object
從屬性值 object 中隨機(jī)選取 count 個(gè)屬性。
2) 'name|min-max': object
從屬性值 object 中隨機(jī)選取 min 到 max 個(gè)屬性。

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

5.屬性值是數(shù)組Array
1) 'name|1': array
從屬性值 array 中隨機(jī)選取 1 個(gè)元素,作為最終值。
2)'name|+1': array
從屬性值 array 中順序選取 1 個(gè)元素,作為最終值。 【easy-mock不生效】
3)'name|min-max': array
通過(guò)重復(fù)屬性值 array 生成一個(gè)新數(shù)組,重復(fù)次數(shù)大于等于 min,小于等于 max。
4)'name|count': array
通過(guò)重復(fù)屬性值 array 生成一個(gè)新數(shù)組,重復(fù)次數(shù)為 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.屬性值是函數(shù)Function
1) 'name': function
執(zhí)行函數(shù) function,取其返回值作為最終的屬性值,函數(shù)的上下文為屬性 'name' 所在的對(duì)象。

7.屬性值是正則表達(dá)式RegExp
1)'name': regexp
根據(jù)正則表達(dá)式 regexp 反向生成可以匹配它的字符串。用于生成自定義格式的字符串。

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

數(shù)據(jù)占位符定義DPD

占位符 只是在屬性值字符串中占個(gè)位置,并不出現(xiàn)在最終的屬性值中。


占位符方法

Basic

1)boolean:boolean( min, max, current )或boolean()
指示參數(shù) current 出現(xiàn)的概率。概率計(jì)算公式為 min / (min + max)。該參數(shù)的默認(rèn)值為 1,即有 50% 的概率返回參數(shù) current。

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

2)natural:natural( min, max )或natural( min )或natural()
返回一個(gè)隨機(jī)的自然數(shù)(大于等于 0 的整數(shù))。
3)integer:integer( min, max )或integer( min )或integer()
返回一個(gè)隨機(jī)的整數(shù)。
4)float:float()或float( min )或float( min, max )或float( min, max, dmin )或float( min, max, dmin, dmax ) 其中,dmax默認(rèn)值是17
返回一個(gè)隨機(jī)的浮點(diǎn)數(shù)。

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

5)character:character()或character( 'lower/upper/number/symbol' )或character( pool )
返回一個(gè)隨機(jī)字符。
內(nèi)置字符池:
{
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 )
返回一個(gè)隨機(jī)字符串。默認(rèn)最大長(zhǎng)度max=7。
內(nèi)置字符池與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 )
返回一個(gè)整型數(shù)組。包含起始值,不包含結(jié)束值。

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

8)date:date()或date(format)
返回一個(gè)隨機(jī)的日期字符串。默認(rèn)格式為 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 )
返回一個(gè)隨機(jī)的時(shí)間字符串。默認(rèn)格式為 HH:mm:ss
10)datetime:datetime()或datetime( format )
返回一個(gè)隨機(jī)的日期和時(shí)間字符串。默認(rèn)格式為 yyyy-MM-dd HH:mm:ss
11)now:now()或now( format )或now( unit )或now( unit, format )
返回當(dāng)前的日期和時(shí)間字符串。默認(rèn)格式為 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 )
生成一個(gè)隨機(jī)的圖片地址
2)dataImage:dataImage()或dataImage( size )或dataImage( size, text )
生成一段隨機(jī)的 Base64 圖片編碼。

Text

1)paragraph:paragraph()或paragraph( len )或paragraph( min, max )。默認(rèn)值是3到7之間的隨機(jī)數(shù)。
隨機(jī)生成一段文本
2)cparagraph:cparagraph()或cparagraph( len )或cparagraph( min, max )
隨機(jī)生成一段中文文本
3)sentence:sentence()或sentence( len )或sentence( min, max )。默認(rèn)長(zhǎng)度是12到18.
隨機(jī)生成一個(gè)句子,第一個(gè)單詞的首字母大寫(xiě)。
4)csentence:csentence()或csentence( len )或csentence( min, max )
隨機(jī)生成一段中文文本。
5)word:word()或word( len )或word( min, max )。默認(rèn)長(zhǎng)度是3到10
隨機(jī)生成一個(gè)單詞(隨機(jī)的小寫(xiě)字母)。
6)cword:cword()或.cword( pool )或cword( length )或cword( pool, length )或cword( min, max )或cword( pool, min, max )。默認(rèn)長(zhǎng)度是1個(gè)漢字。
隨機(jī)生成一個(gè)漢字。
7)title:title()或title( len )或title( min, max )。默認(rèn)長(zhǎng)度是3到7。
隨機(jī)生成一句標(biāo)題,其中每個(gè)單詞的首字母大寫(xiě)。
8)ctitle:ctitle()或ctitle( len )或ctitle( min, max )。默認(rèn)長(zhǎng)度是3到7。
隨機(jī)生成一句中文標(biāo)題。

Name

first() 隨機(jī)生成一個(gè)常見(jiàn)的英文名。
last() 隨機(jī)生成一個(gè)常見(jiàn)的英文姓。
name() 隨機(jī)生成一個(gè)常見(jiàn)的英文姓名
name(true) 隨機(jī)生成一個(gè)常見(jiàn)的英文姓名(包含中間名。。false:不包含中間名)
cfirst() 隨機(jī)生成一個(gè)常見(jiàn)的中文名。
clast() 隨機(jī)生成一個(gè)常見(jiàn)的中文姓。
cname() 隨機(jī)生成一個(gè)常見(jiàn)的中文姓名。

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

Web

url():隨機(jī)生成一個(gè) URL。
url( protocol, host ):隨機(jī)生成一個(gè) URL,并指定 URL 域名和端口號(hào)。【easy-mock中不生效】
protocol():隨機(jī)生成一個(gè) URL 協(xié)議。返回以下值之一:'http'、'ftp'、'gopher'、'mailto'、'mid'、'cid'、'news'、'nntp'、'prospero'、'telnet'、'rlogin'、'tn3270'、'wais'。
domain():隨機(jī)生成一個(gè)域名。
tld():隨機(jī)生成一個(gè)頂級(jí)域名。
email():隨機(jī)生成一個(gè)郵件地址。
email( domain ):指定郵件地址的域名?!緀asy-mock中不生效】
ip():隨機(jī)生成一個(gè) 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():隨機(jī)生成一個(gè)(中國(guó))大區(qū)。
province():隨機(jī)生成一個(gè)(中國(guó))省(或直轄市、自治區(qū)、特別行政區(qū))。
city():隨機(jī)生成一個(gè)(中國(guó))市。
city( true|false ):指示是否生成所屬的省。true-返回格式:"安徽省 宣城市"。
county():隨機(jī)生成一個(gè)(中國(guó))縣。
county( true|false ):指示是否生成所屬的省、市。
zip():隨機(jī)生成一個(gè)郵政編碼(六位數(shù)字)。

Helper

      "name_1": "@capitalize('hello')",  把字符串的第一個(gè)字母轉(zhuǎn)換為大寫(xiě)。
      "name_2": "@upper('hello')",   把字符串轉(zhuǎn)換為大寫(xiě)。
      "name_3": "@lower( 'hello' )", 把字符串轉(zhuǎn)換為小寫(xiě)。
      "name_4": "@pick(['a', 'e', 'i', 'o', 'u'])", 從數(shù)組中隨機(jī)選取一個(gè)元素,并返回。
      "name_5": "@shuffle(['a', 'e', 'i', 'o', 'u'])", 打亂數(shù)組中元素的順序,并返回。

Miscellaneous

      "name_1": "@guid()", 隨機(jī)生成一個(gè) GUID。格式:"name_1": "94f9C233-d80b-A0DD-cd64-E9249fD4C90d",
      "name_2": "@id()", 隨機(jī)生成一個(gè) 18 位身份證。
      "name_3": "@increment()", 生成一個(gè)全局的自增整數(shù)。 格式:"name_3": 214,
      "name_4": "@increment(2)", 生成一個(gè)全局的自增整數(shù),步數(shù)為2。 格式:"name_4": 216,
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容