爲了作到先後端並行開發,數據mock就成爲環境搭建的重要一環。node
數據mock分類兩種思路:json
在client端處數據mock後端
在server端mock。api
第一種方式攔截了請求的發出,直接返回mock的數據,而第二種方式請求則真實地發出,只是在server端進行route攔截。緩存
先後端分離的方式,就是在傳統開發模式中加了一個node層,這樣數據mock徹底能夠在node server端完成,基本思路以下:app
只有線下開發模式(development),纔會須要進行數據mock前後端分離
根據請求的url,拼接造成一個file pathui
爲了不node緩存,刪除require.cache(path)url
讀取require(path) ,若是該文件不存在或讀取失敗,則跳轉到失敗路由
這樣簡單的數據mock就實現了spa
// 僞代碼 if (process.env.NODE_ENV === 'development') { router.set('/api/*', mockapi) } function mockapi(req, res, opts) { var basePath = url.parse(req.url).pathname; try { var findPath = require.resolve(prefixPath + basePath + '.js'); delete require.cache[findPath] var result = require(findPath); } catch (err) { return next(err); } if (typeof result === 'function') { return result(req, res, opts); } if (typeof result.status === 'undefined' || typeof result.body === 'undefined') { next(new Error('status 或 body 不存在')) return; } res.writeHead(result.status, { 'Content-Type': 'application/json;charset=UTF-8' }); res.write(JSON.stringify(result.body)) res.end(); cb() }