生產數據
:經過mockjs提供的方法,你能夠輕鬆地創造大量隨機的文本,數字,布爾值,日期,郵箱,連接,圖片,顏色等.javascript
強大的攔截功能
:mockjs能夠進行強大的ajax攔截.能判斷請求類型,獲取到url,請求參數等.而後能夠返回mock的假數據,或者你本身編好的json文件.功能強大易上手.前端
前端本身玩本身的,後端也本身玩本身的.等到聯調時,發現接口徹底牛頭不對馬嘴!
因此在開發時,先後端也要時刻保持溝通,及時確認最新的接口和數據結構. 這裏推薦使用swagger進行管理.npm install mockjs --save-dev
複製代碼
檢查mockjs是否安裝成功能夠在package.json和package-lock.json中搜索mockjs是否存在.vue
各個文件說明:java
mock:存放全部mock相關的文件,建議放在根目錄,方便獲取和查看.node
test:按項目模塊分類存放對應的mock文件.例如:device存放是device設備模塊須要的mock文件.這裏test爲存放此次演示所需的mock文件.nginx
test-mock.js:mock主文件.主要是mock數據,對攔截請求作處理.git
test-json.json:存放json格式的假數據.github
index.js:後面在main.js中引入的文件.做用就是將全部模塊的mock.js進行引入.ajax
utils.js:根據項目需求,將經常使用的模擬數據方法寫在裏面.方便模塊mock假數據.正則表達式
在定義接口階段,後端給出的接口文檔裏就會有請求的接口和返回數據實例.這個時候雖然接口還不能訪問,但有了mockjs後,咱們前端已經能夠進行ajax請求.而且在json文件中.將接口文檔裏的數據實例,複製粘貼,而後改一下就完成了最原始最簡單的數據實現.但若是是數據有特殊要求,數量不少,結構很複雜的,建議仍是使用mockjs給出的方法來造數據.
這裏安利一下swagger,上圖截自swagger.這個時候你只需將ExampleValue下的數據實例進行復制.而後粘貼到json文件中,而後稍微修改一下就完成了.這裏我就不寫出來了,佔地方.其實在模擬簡單數據時,徹底可使用這種方法,不必使用mock的方法.import Mock from 'mockjs' //引入mock
import testJson from './test-json.json' //引入上面建立的json假數據
import utils from '../utils' //引入公用方法
const res =function (opt) {
//opt爲ajax請求的選項集.包含url,type和body三個屬性
// opt.url爲請求的url.
//opt.type爲請求類型,例如get,post,delete
//opt.body爲請求的參數
//1, 使用mock方法來造數據
let mockData =Mock.mock({
'code':0,
'msg':'成功',
'list|1-10':[{
'id|+1':1
}]
});
let data=JSON.stringify(mockData,null,4);//將數據進行轉換
//2, 對請求參數進行判斷
let param=opt.body;//用param保存請求的參數
let result; //用result保存對param校驗的結果
//... 省略對param進行校驗的過程
//3, 根據校驗的結果返回數據
if(result===true){
//此時校驗結果正確
return data;
//return testJson 也能夠返回以前寫好的json文件.本身看狀況選擇.數據不復雜狀況下,我是直接返回.json文件.
}else {
return {
//校驗錯誤,則返回錯誤提示信息
'msg':'請求參數錯誤'
}
}
}
Mock.mock(/devicemanage\/api\/pc\/dm\/device\/structure\/query\?token=/,'post',res)
//這裏使用mock()的函數寫法.這樣就能夠獲取到請求的參數,這裏url是正則的寫法.
//Mock.mock(rul,rtype,function(opt))
//rul:須要攔截的url.這裏有兩種寫法,一種是字符串形式,例如:'/api/device'則表示只能攔截/api/device請求.但咱們可能會常常須要在url上添加token等其餘參數.
//這時就須要寫成第二種形式,正則表達式/api\/device/,這樣咱們就能攔截全部包含/api/device的請求.這樣咱們在進行ajax請求時,就能夠直接編寫真實的url地址.
//rtype:表示須要攔截的ajax請求類型.例如:get,post,put,delete等.
//function(opt):響應數據的函數,其中opt已經在代碼最上面進行了說明.
複製代碼
import device from './device/device-mock'
import event from './event/event-mock'
import home from './home/home-mock'
import log from './log/log-mock'
import patrol from './patrol/patrol-mock'
import test from './test/test-mock'
複製代碼
從上面的代碼來看,這個文件的做用很顯然,就是將分散的mock文件集合起來.後面再添加新的mock文件,都須要在這裏引入.
這個js文件,就是存放你須要用到的公用方法(例如json格式轉換)和項目經常使用的mock數據(例如我司經常使用的設備列表和組織結構).這裏我就不貼本身公司代碼了.本身根據官方文檔mock經常使用的數據並導出.
import mock from '../mock/index'
複製代碼
在main.js中引入也很簡單.只須要引入上面的寫好的index.js就能夠了.到此你就已經完成了mockjs的項目實踐.趕忙跑一遍看看!
一句話歸納就是暫時不適合該項目.下面列出幾條主要緣由,僅表明我的觀點和在該項目狀況下.若是你以爲有其餘見解或者更好的建議和想法,歡迎評論指正.
這種寫法的缺點:
若是前端開發人員很少,只有四五我的.而且不存在跨地區合做的話.其實這種寫法已經能夠知足現階段mock需求.
若是前端開發人員不少,存在跨地區合做,交流困難,後端接口須要頻繁修改的話.這種寫法並不適合!這時候推薦使用easy-mock.部署到本地內網後,就能夠和其餘前端後端小夥伴愉快地 共同維護mock數據和接口.