激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 玩轉 Mockjs,前端也能跑得很溜

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

2022-01-05 23:24前端人 js教程

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

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

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

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

一、數據模板定義規范

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

使用語法為:

  1. "name|rule": value 

值得注意的有:

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

生成規則的格式分別有:

1.1、屬性值是類型 String

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

  1. 'name|min-max':string 
  2. 通過生成一個 string 重復 min 到 max 之間的一個字符串。。 
  3.  
  4. //使用 
  5. 'name|1-3':'a' 
  6. 運行結果:生成一個 a 的個數為 1-3 之間的字符串變量。可能的結果有: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 

生成一個區間數值。

  1. 'name|min-max':num 
  2. 生成一個 min 到 max 之間的數值,num 用來指定類型 
  3.  
  4. //使用 
  5. 'name|1-3': 1 
  6. 運行結果:生成一個 1-3 之間的數字。可能的結果有: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 位的數字字符串 

二、數據占位符定義規范

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

使用格式:

  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()。
  • 占位符也可以引用 “數據模板” 中的內容。
  • 占位符優先引用數據模板中的屬性。
  • 支持相對和絕對路徑。
  1. Mock.mock('@string("number", 5)'
  2. 生成一個五位數的字符串 
  3.  
  4. Mock.mock('@color'
  5. 生成隨機的顏色 
  6. //等同于 
  7. Random.color() 

三、使用舉例

創建一個 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. }] 

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

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

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

原文鏈接:https://www.toutiao.com/a7038875111243465227/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91色综合综合热五月激情 | 欧美精品a∨在线观看不卡 午夜精品影院 | 久久精品无码一区二区三区 | 斗罗破苍穹在线观看免费完整观看 | 麻豆视频在线观看免费网站 | 91天堂国产在线 | 凹凸成人精品亚洲精品密奴 | 91精品国| 久久99精品久久久久久久久久久久 | 在线看小早川怜子av | 亚洲性生活视频 | 少妇的肉体的满足毛片 | 在线免费av网站 | 欧美精品a∨在线观看不卡 午夜精品影院 | 久久精品一区视频 | av免费在线观看av | 日本爽快片100色毛片视频 | 中文字幕在线亚洲精品 | 在线观看免费污视频 | 一级做受毛片免费大片 | 欧美羞羞视频 | 亚洲欧美日韩中文在线 | 欧美日韩一 | 狠狠99 | 九九热国产在线 | 国产精品av久久久久久久久久 | 午夜国内精品a一区二区桃色 | 九九热精品免费 | 午夜精品久久久久久中宇 | 国产一级毛片国语版 | 亚洲成人精品视频 | 久久精品视频3 | 99国产精品自拍 | 欧洲成人在线视频 | 日本aaaa片毛片免费观蜜桃 | 免费放黄网站在线播放 | 91精品国产综合久久婷婷香 | 欧美成人免费看 | 色678黄网站全部免费 | 欧美wwwsss9999| 91九色电影|