mockjs,json-server一起搭建前端通用的數(shù)據(jù)模擬框架教程
無論是在工作,還是在業(yè)余時(shí)間做前端開發(fā)的時(shí)候,難免出現(xiàn)后端團(tuán)隊(duì)還沒完成接口的開發(fā),而前端團(tuán)隊(duì)卻需要實(shí)現(xiàn)對應(yīng)的功能,不要問為什么,這是肯定存在的。本篇文章就是基于此原因而產(chǎn)出的。希望對有這方面的需求的同志有所幫助。
一、使用的組件包
1. mockjs:用于模擬查詢結(jié)果
2. json-server:搭建模擬服務(wù)器,以及模擬CRUD的相關(guān)操作接口
二、具體的實(shí)現(xiàn)1. 建立項(xiàng)目,并安裝相應(yīng)的依賴
cnpm install --save-dev mockjs json-server
上述命令為安裝依賴,下圖為項(xiàng)目結(jié)果:
說明:
data:此文件夾存放的為利用mockjs模擬的查詢結(jié)果,dataProvider后面單獨(dú)簡單
lib:包含的一個(gè)jquery文件,用于模擬ajax請求用
route:json-server的路由表,用于模擬crud操作用,沒搞清楚如何實(shí)現(xiàn)多個(gè)db.json
index.js:模擬服務(wù)器入口文件
test.html:測試cors
2. 搭建基礎(chǔ)的json-server服務(wù)器
var JsonServer = require('json-server'); var path = require('path') var Server = JsonServer.create(); var defaultMid = JsonServer.defaults({ "noCors": false, "static": path.join(__dirname, "/lib") }); var router = JsonServer.router(path.join(__dirname, '/route/db.json')); Server.use(defaultMid); Server.use(router); Server.listen(8009); console.log('start 8009.....');
此部分內(nèi)容完全按照json-server的官方說明編寫,值得注意的是static和noCors的設(shè)置,他是作為一個(gè)中間件來完成的。
3. 增加mockjs的應(yīng)用
在這里mockjs只作為參生數(shù)據(jù)的基石,而dataProvider.js卻提供了統(tǒng)一外部訪問接口的能力。也就是把模擬數(shù)據(jù)以module(相當(dāng)于mvc中的controller)和func(相當(dāng)于mvc中的action)來進(jìn)行分隔。不知這種實(shí)現(xiàn)是否可行(本人現(xiàn)在項(xiàng)目中暫時(shí)是這樣使用的。)
3.1 首先,在data文件夾中建立emp.js文件,編寫了如下內(nèi)容:
var mockjs = require('mockjs'); module.exports = { list: function(){ var data = mockjs.mock({ 'list|3':[ { 'id|+1':1 } ] }); return data.list; } }
此處就是對mockjs的使用
3.2 dataProvider使用實(shí)現(xiàn)模塊的收集
var emp = require('./emp'); var moduels = { emp: emp } module.exports = { execute: function(m, f, args){ return moduels[m][f].call(moduels[m], args); } }
3.3 json中增加get方法,用于獲取數(shù)據(jù)
var provider = require('./data/dataProvider'); Server.get('/data',function(req,res){ var moduleName = req.body ? req.body.moduleName : req.query.moduleName; var funName = req.body ? req.body.funName : req.query.funName; var arg = null; res.json(provider.execute(moduleName, funName)); res.end(); });
如果要訪問emp下的List,則地址為:http://localhost:8009/data?moduleName=emp&funName=list
4. 總結(jié)
1. json-server的db.json文件只能有一個(gè),這里可以配置多個(gè)數(shù)據(jù)實(shí)體,他是以get為獲取,post為寫入http協(xié)議來實(shí)現(xiàn)數(shù)據(jù)的CRUD的
看到這里,你是否有感覺到搭建一個(gè)數(shù)據(jù)模擬服務(wù)器如此簡單,當(dāng)然只是webapi的。下載示例代碼
以上這篇mockjs,json-server一起搭建前端通用的數(shù)據(jù)模擬框架教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SQL Server之JSON 函數(shù)詳解
- MockJs結(jié)合json-server模擬后臺(tái)數(shù)據(jù)
- Vue請求JSON Server服務(wù)器數(shù)據(jù)的實(shí)現(xiàn)方法
- 使用json-server簡單完成CRUD模擬后臺(tái)數(shù)據(jù)的方法
- Vue使用json-server進(jìn)行后端數(shù)據(jù)模擬功能
- Vue-cli 使用json server在本地模擬請求數(shù)據(jù)的示例代碼
- SqlServer將查詢結(jié)果轉(zhuǎn)換為XML和JSON
- JsonServer安裝及啟動(dòng)過程圖解
相關(guān)文章
doctype后如何獲得body.clientHeight的方法
doctype后如何獲得body.clientHeight的方法...2007-07-07JS中使用cavas截圖網(wǎng)頁并解決跨域及模糊問題
這篇文章主要介紹了JS中使用cavas截取網(wǎng)頁并解決跨域以及模糊問題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11js實(shí)現(xiàn)的拖動(dòng)后記錄軌跡并運(yùn)行
軌跡拖動(dòng)(拖影效果)2010-06-06