自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

玩轉 Mockjs,前端也能跑得很溜

開發(fā) 前端
mockjs作用就是,生成隨機模擬數據,攔截 ajax 請求,可以對數據進行增刪改查。在生成數據時,我們就需要能夠熟練使用 mock.js 的語法。

mockjs作用就是,生成隨機模擬數據,攔截 ajax 請求,可以對數據進行增刪改查。在生成數據時,我們就需要能夠熟練使用 mock.js 的語法。

Mockjs 的語法規(guī)范包括兩部分:數據模板定義規(guī)范和數據占位符定義規(guī)范。

一、數據模板定義規(guī)范

數據模板中的每個屬性組成有:屬性名、生成規(guī)則、屬性值。

使用語法為:

  1. "name|rule": value 

值得注意的有:

  • 屬性名和生成規(guī)則之間使用 | 分割。
  • 生成規(guī)則是可選參數。
  • 生成規(guī)則有 7 種形式。
  • 生成規(guī)則含義需要依賴于屬性值的類型。
  • 屬性值可以指定初始值和類型。

生成規(guī)則的格式分別有:

1.1、屬性值是類型 String

變量的重復次數是一個隨機值。

  1. 'name|min-max':string 
  2. 通過生成一個 string 重復 min 到 max 之間的一個字符串。。 
  3.  
  4. //使用 
  5. 'name|1-3':'a' 
  6. 運行結果:生成一個 a 的個數為 1-3 之間的字符串變量??赡艿慕Y果有:a、aa 、aaa 

 直接指定重復次數。

  1. 'name|count':string 
  2. 通過生成一個 string 重復 count 次的一個字符串。。 
  3.  
  4. //使用 
  5. 'name|3':'a' 
  6. 運行結果:aaa 

1.2、屬性值是 Number

生成不斷累加的數字。

  1. 'name|+1':num 
  2. 初始值為 num ,生成的屬性值自動加 1 

 生成一個區(qū)間數值。

  1. 'name|min-max':num 
  2. 生成一個 min 到 max 之間的數值,num 用來指定類型 
  3.  
  4. //使用 
  5. 'name|1-3': 1 
  6. 運行結果:生成一個 1-3 之間的數字??赡艿慕Y果有:1、2、3 

 生成帶有小數點的數字。

  1. 'name|min-max.dmin-dmax': num 
  2. 生成一個浮點數,整數部分介于 min 和 max 之間,小數保留 dmin 到 dmax 位。num 用來指定類型。 
  3.  
  4. //使用 
  5. 'num1|1-10.1-2': 1 
  6. 運行結果:生成 1-10 之間的帶有 1到 2 位小數的浮點數。如:2.1、3.12 等 
  7.  
  8. 'num2|5.1-2': 1 
  9. 生成一個整數部分為 5 ,保留 1 到 2 位小數的浮點數。如:5.1、5.33、5.09 等 
  10.  
  11. 'num3|5.2': 1 
  12. 生成整數為 5 ,保留兩位小數的浮點數。如:5.11、5.67 等 

1.3、屬性值是 Boolean

  1. 'name|1': boolean 
  2. 生成一個隨機值,真 假 概率都是一半。 
  3.  
  4. //使用 
  5. 'isLike|1'true 
  6. 生成 isLike 的值可能為 true 、false。概率是一樣的。 
  1. 'name|min-max': value 
  2. 隨機生成一個布爾值, 
  3. 值為 value 的概率是 min / (min + max), 
  4. 值為 !value 的概率是 max / (min + max)。 
  5.  
  6. //使用 
  7. 'like|1-5'true 
  8. 生成 true 的 概率為 1/6 。生成 false 的概率為 5/6 

1.4、屬性值是對象 Object

生成一個指定屬性個數的對象。

  1. 'obj|num': object 
  2. 從屬性值 object 中,隨機選取 num 個屬性。 
  3.  
  4. //使用 
  5. 'obj|2': { 
  6.              a: '1'
  7.              b: '2'
  8.              c: '3' 
  9.             } 
  10. 運行結果可能為: 
  11. {a: "3", b: "2"
  12. {c: "3", b: "2"
  13. {a: "3", c: "2"

 生成一個屬性個數隨機的對象。

  1. 'obj|min-max': object 
  2. 從 object 中 隨機選取 min 到 max 個屬性,生成一個對象。 
  3.  
  4. //使用 
  5. 'obj|1-2': { 
  6.              a: '1'
  7.              b: '2'
  8.              c: '3' 
  9.             } 
  10. 運行結果可能為: 
  11. {a: "3"
  12. {b: "3"
  13. {c: "3"
  14. {a: "3", b: "2"
  15. {c: "3", b: "2"
  16. {a: "3", c: "2"

1.5、屬性值是數組 Array

取數組中某個元素作為結果。

  1. 'arr|1':array 
  2. 從屬性值 array 中隨機選取 1 個元素作為結果返回 
  3.  
  4. //使用 
  5. 'arr|1':[1,2,3] 
  6. 運行結果為:1、2、3 三種結果 

 生成新數組。

  1. 'arr|min-max': array 
  2. 通過重復 array 的元素生成新數組,重復次數 min 到 max 。 
  3.  
  4. //使用 
  5. 'arr|1-2': [ 1,2,3 ] 
  6. 運行結果為:[ 1,2,3 ] 或 [ 1,2,3,1,2,3 ] 
  1. 'arr|num': array 
  2. 通過重復 array 的元素生成新數組,重復次數 num 次 。 
  3.  
  4. //使用 
  5. 'arr|2': [ 1,2,3 ] 
  6. 運行結果為: [ 1,2,3,1,2,3 ] 

1.6、屬性值是函數 Function

  1. 'name':function 
  2. function 返回值作為最終的屬性值。 
  3.  
  4. //使用 
  5. 'name': ()=>{ 
  6.  return 'web learn' 
  7. 運行結果為 web learn 

在數據占位符中,屬性值是函數有重要的意義。待會會重點解釋。

1.7、屬性值是正則 RegExp

  1. 'name': regexp 
  2. 根據正則表達式 regexp 反向生成可以匹配的字符串。用于生成自定義格式的字符串 
  3.  
  4. //使用 
  5. 'reg': /[a-zA-Z0-9]2/ 
  6. 生成大小寫字母和數字任意組成的長度為 2 的字符串 
  7.  
  8. 'reg':/\d{5,10}/ 
  9. 生成任意的 5 到 10 位的數字字符串 

二、數據占位符定義規(guī)范

數據占位符只是在屬性字符串中占個位置,并不會出現在最終的屬性值中。

使用格式:

  1. @占位符 
  2. @占位符(參數 [, 參數]) 
  3.  
  4. //使用 
  5. 'name'"@name"
  6.  生成英文名,如:Edward Rodriguez 
  7.  
  8. //帶有參數 
  9. 'first':"@name(middle)"
  10. 生成帶有中間名的英文名 。如:Ruth Paul Robinson 
  11.  
  12. 'name'"@cname"
  13.  生成中文名 

注意:

  • 用 @ 來標識后邊的字符串是標識符。
  • 占位符引用的都是 mock.Random 中的方法。
  • 如果需要擴展自定義占位符,可使用 Mock.Random.extend()。
  • 占位符也可以引用 “數據模板” 中的內容。
  • 占位符優(yōu)先引用數據模板中的屬性。
  • 支持相對和絕對路徑。
  1. Mock.mock('@string("number", 5)'
  2. 生成一個五位數的字符串 
  3.  
  4. Mock.mock('@color'
  5. 生成隨機的顏色 
  6. //等同于 
  7. Random.color() 

三、使用舉例

創(chuàng)建一個 api 接口,返回一個隨機生成的數組:

  1. export default [ 
  2.  { 
  3.   url: "/api/list"
  4.   method: "post"
  5.   response: ({ url, body }) => { 
  6.    // body 是post方法時傳入的數據 
  7.    // url 是請求接口,get方法時,也包含傳遞的參數 
  8.    return { 
  9.     code: 200, 
  10.     message: "ok"
  11.     //生成一個數組 
  12.     // 長度介于 10 到 20 之間 
  13.     'list|10-20': [{ 
  14.      name:'@cname' //生成中文名 
  15.     }] 
  16.    }; 
  17.   } 
  18.  } 

 占位符引用的都是 Mock.random 內的方法,所以我們可以把上述代碼更改為:

  1. 'list|10-20': [{ 
  2.  name:Random.cname() //生成中文名 
  3. }] 

 此時我們再查閱的時候,就發(fā)現生成的數組內,名字都是一模一樣的。如果我們想生成不一樣的姓名,該如何解決呢?

解決辦法:把屬性值更改為函數,將函數的返回值作為最終結果。

  1. 'list|10-20': [{ 
  2.  name:()=>{ 
  3.   Random.cname() 
  4.  }  
  5. }] 

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-05-31 11:17:14

單元化異地雙活

2019-11-28 14:07:46

技術架構代碼

2013-10-16 14:16:45

iPhone 3GSiOS 7

2024-11-25 18:00:00

C#代碼編程

2025-02-24 10:07:04

2012-07-19 14:42:58

Windows 8微軟

2010-09-02 17:31:42

VisualStudi微軟flash

2021-01-05 13:45:31

Go語言編程語言

2019-08-05 14:10:26

WindowLinuxRedis

2023-12-13 09:22:40

python

2022-05-05 09:31:58

JOIN數據庫

2020-03-04 10:54:54

開源技術 數據

2017-06-11 21:55:47

深度學習神經網絡模型

2020-07-20 09:49:56

開源技術 趨勢

2012-05-17 14:37:33

SAPHANA邁凱輪

2012-06-13 01:53:23

Java代碼

2024-08-27 00:00:01

AI應用框架

2022-09-01 07:18:21

分離項目Vue

2025-02-18 08:00:00

Windows 7開源工具Windows
點贊
收藏

51CTO技術棧公眾號