RAP Mock.js語法規範

Mock.js 的語法規範包括兩部分:git

  1. 數據模板定義規範(Data Template Definition,DTD)
  2. 數據佔位符定義規範(Data Placeholder Definition,DPD)

1.數據模板定義規範 DTD

數據模板中的每一個屬性由 3 部分構成:屬性名、生成規則、屬性值:github

// 屬性名   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
  • 屬性值 中能夠含有 @佔位符
  • 屬性值 還指定了最終值的初始值和類型。

2.生成規則和示例數組

1. 屬性值是字符串 String

  1. 'name|min-max': stringdom

    經過重複 string 生成一個字符串,重複次數大於等於 min,小於等於 max函數

  2. 'name|count': stringspa

    經過重複 string 生成一個字符串,重複次數等於 countcode

2. 屬性值是數字 Number

  1. 'name|+1': numberregexp

    屬性值自動加 1,初始值爲 number對象

  2. 'name|min-max': number

    生成一個大於等於 min、小於等於 max 的整數,屬性值 number 只是用來肯定類型。

  3. 'name|min-max.dmin-dmax': number

    生成一個浮點數,整數部分大於等於 min、小於等於 max,小數部分保留 dmin 到 dmax 位。

Mock.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
}

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 個屬性。

5. 屬性值是數組 Array

  1. 'name|1': array

    從屬性值 array 中隨機選取 1 個元素,做爲最終值。

  2. 'name|+1': array

    從屬性值 array 中順序選取 1 個元素,做爲最終值。

  3. 'name|min-max': array

    經過重複屬性值 array 生成一個新數組,重複次數大於等於 min,小於等於 max

  4. 'name|count': array

    經過重複屬性值 array 生成一個新數組,重複次數爲 count

6. 屬性值是函數 Function

  1. 'name': function

    執行函數 function,取其返回值做爲最終的屬性值,函數的上下文爲屬性 'name' 所在的對象。

7. 屬性值是正則表達式 RegExp

  1. 'name': regexp

    根據正則表達式 regexp 反向生成能夠匹配它的字符串。用於生成自定義格式的字符串。

    Mock.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"
    }

3.數據佔位符定義規範 DPD

佔位符 只是在屬性值字符串中佔個位置,並不出如今最終的屬性值中。

佔位符 的格式爲:

@佔位符 @佔位符(參數 [, 參數])

注意:

  1. 用 @ 來標識其後的字符串是 佔位符。
  2. 佔位符 引用的是 Mock.Random 中的方法。
  3. 經過 Mock.Random.extend() 來擴展自定義佔位符。
  4. 佔位符 也能夠引用 數據模板 中的屬性。
  5. 佔位符 會優先引用 數據模板 中的屬性。
  6. 佔位符 支持 相對路徑 和 絕對路徑。
Mock.mock({
    name: {
        first: '@FIRST',
        middle: '@FIRST',
        last: '@LAST',
        full: '@first @middle @last'
    }
})
// =>
{
    "name": {
        "first": "Charles",
        "middle": "Brenda",
        "last": "Lopez",
        "full": "Charles Brenda Lopez"
    }
}  
相關文章
相關標籤/搜索