先後端分離 --- 數據mock思路

爲了作到先後端並行開發,數據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()
}
相關文章
相關標籤/搜索