Mock.js模擬接口數據


現在開發已經是前后端分離了,前端和后端可以同時進行開發,互不影響,但是有些時候后端開發的接口慢於前端,導致前端需要等待后端的接口完成才能完成前后端對接,為了解決這個痛點,出現了模擬接口數據的方案,目前行業中主要有四種方案來模擬后端放回的數據:

  • 暴力式,直接在前端代碼中寫入模擬數據,但是這種缺點很明顯,改變了代碼的原有邏輯,嵌入式太深,耦合性搞
  • 攔截式,這就是本文主要推薦的方式,通過攔截ajax請求,然后重定向到項目中的某個js文件,從js文件中獲取各種偽造的數據
  • Mock Server,就是搭建一個Mock服務器來模擬數據,根據這個服務器來生產需要的接口數據,很顯然這種成本有點高,不適合任何人,特別是大型的團隊,文檔的編寫,接口的變更,通知到每一個人,代價就比較大了
  • Mock 平台,比如市面上RAP,但是需要后端使用他,未必所有的后端都願意使用他

 

Mock.js:生成隨機數據,攔截 Ajax 請求,Mock.js 通過覆蓋和模擬原生 XMLHttpRequest 的行為來攔截 Ajax 請求,“轉發”到本地文件,所謂轉發,其實就是讀取本地 mock文件,並以json或者script等格式返回給瀏覽器。
Mock.js具有以下幾個特點:

  • 讓前端攻城師獨立於后端進行開發,前后端可以同時進行。
  • 不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬的響應數據。
  • 支持生成隨機的文本、數字、布爾值、日期、郵箱、鏈接、圖片、顏色等。
  • 通過隨機數據,模擬各種場景。

 

安裝

# 推薦通過npm安裝 npm install mockjs

 

使用示例

// 首先在js文件中引進 var Mock = require('mockjs') var data = Mock.mock({ // 屬性 list 的值是一個數組,其中含有 1 到 10 個元素 'list|1-10': [{ // 屬性 id 是一個自增數,起始值為 1,每次增 1 'id|+1': 1 }] })

資源搜索網站大全 http://www.szhdn.com 廣州VI設計公司https://www.houdianzi.com

語法

主要可以分成以下兩個方面:

  • 數據模板定義規范
  • 據占位符定義規范

數據模板中的每個屬性由 3 部分構成:屬性名、生成規則、屬性值:'name|rule': value

  • 'name|min-max': string=>通過重復 string 生成一個字符串,重復次數大於等於 min,小於等於 max)
  • 'name|count': string=>通過重復 string 生成一個字符串,重復次數等於 count
  • 'name|+1': number=>屬性值自動加 1,初始值為 number
  • 'name|min-max': number=>生成一個大於等於 min、小於等於 max 的整數,屬性值 number 只是用來確定類型
  • 'name|count': object=>定對象中隨機選擇兩條數據,
Mock.mock({
  "object|2": { "310000": "上海市", "320000": "江蘇省", "330000": "浙江省", "340000": "安徽省" } }) 

輸出為:

{
  "object": { "320000": "江蘇省", "330000": "浙江省" } }

數據占位符定義規范 DPD
占位符 只是在屬性值字符串中占個位置,並不出現在最終的屬性值中。

  • 來標識其后的字符串是 占位符。
  • 符 引用的是 Mock.Random 中的方法。
  • Mock.Random.extend() 來擴展自定義占位符。
  • 符 也可以引用 數據模板 中的屬性。
  • 符 會優先引用 數據模板 中的屬性。
  • 符 支持 相對路徑 和 絕對路徑。

可以通過Mock.setup( settings ),配置攔截 Ajax 請求時的行為。支持的配置項有:timeout
指定被攔截的 Ajax 請求的響應時間,單位是毫秒。值可以是正整數,例如 400,表示 400 毫秒 后才會返回響應內容;也可以是橫杠 '-' 風格的字符串,例如 '200-600',表示響應時間介於 200 和 600 毫秒之間。默認值是'10-100'。

Mock.setup({ timeout: 400 }) Mock.setup({ timeout: '200-600' })


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM