搭建簡單的僞熱更新Mock服務

簡介

剛開始接觸vue-cli,發現用它生成的框架代碼是缺乏Mock模擬的,因而本身摸索了許久,將本身的摸索的結果經過過程記錄下來,但願對別人有所幫助,能少走彎路。javascript

這不是關於vue-cli的,是單純的模擬數據服務 這不是關於vue-cli的,是單純的模擬數據服務 這不是關於vue-cli的,是單純的模擬數據服務vue

同時但願得到更好的解決方案,有更好方案的不要吝嗇分享啊。java

實現目標

  • 1.ajax數據模擬,靈活的接口配置
  • 2.熱更新(不用手動重啓mock的服務,自動重啓不知道算不算O(∩_∩)O哈哈~)

搭建

過程變化node

  • 1.簡單mock服務
  • 2.可配置的mock服務
  • 3.熱更新的可配置的mock服務

簡單mock服務

目錄結構

projectgit

  • node_modules
  • mockServer.js
  • package.json

代碼

用到的node_modulesgithub

  • express
  • mockjs

代碼以下mockServer.jsajax

const express = require('express'); //引入express模塊
const Mock = require('mockjs'); //引入mock模塊
const app = express(); //實例化express

// 路由api對應的模擬數據
app.all('/api', function (req, res) {
// mockjs中屬性名‘|’符號後面的屬性爲隨機屬性,數組對象後面的隨機屬性爲隨機數組數量,正則表達式表示隨機規則,+1表明自增

  res.json(Mock.mock({
    "status": 200,
    "data|1-9": [{
      "name|5-8": /[a-zA-Z]/,
      "id|+1": 1,
      "value|0-500": 20
    }]
  }));
});

// 監聽8090端口
app.listen('8090');
複製代碼

運行結果

圖片描述


可配置的mock服務

最簡單的mock服務實現了,可是想一想加入後期接口數量增長,那代碼函數豈不是函數式增加!!!∑(゚Д゚ノ)ノ。還能不能愉快的維護了。正則表達式

因此改良版就來了,這裏我經過多個json文件來模擬多個請求的數據,經過一個配置文件來映射文件和接口vue-cli

用到的模塊express

  • express
  • mockjs
  • path
  • fs

目錄結構

圖片描述

代碼

mockServer.js

const express = require('express'); //引入express模塊
const Mock = require('mockjs'); //引入mock模塊
const app = express(); //實例化express
const path = require("path"); //引入path模塊 核心模塊不準要npm
const fs = require('fs'); // 引入fs模塊 核心模塊不準要npm

// 讀取配置文件 將路由和文件對應上
fs.readFile(__dirname + '/test/conf.json', 'utf-8', function (err, data) {
  if (err) {
    console.log(err);
  } else {
    let dataObject = JSON.parse(data);
    for (let key in dataObject) {
      app.all(dataObject[key].url, function (req, res) {
        fs.readFile(path.join(__dirname + '/test', dataObject[key].path), 'utf-8', function (err, data) {
          if (err) {
            console.log(err);
          } else {
            res.json(Mock.mock(JSON.parse(data)));
          }
        })
      });
    }
  }
});
// 監聽8090端口
app.listen('8090');
複製代碼

conf.json

{
  "api1":{
    "url":"/api1",
    "path":"./api1/api1.json"
  },
  "api2":{
    "url": "/api2",
    "path": "./api2/api2.json"
  }
}
複製代碼

api1.json

{
  "data":"i am api1"
}
複製代碼

api2.json

{
  "api2":"hahah"
}
複製代碼

運行結果

圖片描述

圖片描述

熱更新的可配置的mock服務

通過上面的修改,終於不用寫那麼多行代碼了O(∩_∩)O哈哈~ 可是人(我)是很懶的生物,若是每次改個配置文件,改個模擬數據文件手動重啓才能生效豈不是好累 因此咱們來模擬一下熱更新,有木有好高大上的感受O(∩_∩)O哈哈~

目錄結構

圖片描述

你沒有看錯,就添加了一個mockStart.js文件而已哦

代碼

這裏借用了nodemon來檢檢測json文件,而後重啓mock服務

mockStart.js

var nodemon = require('nodemon'); //引入nodemon模塊

/**
 * script 重啓的腳本
 * ext 檢測的文件
 */
nodemon({
  script: 'mockServer.js',
  ext: 'json'
});

nodemon.on('start', function () {
  console.log('mockServer has started');
}).on('quit', function () {
  console.log('mockServer has quit');
  process.exit();
}).on('restart', function (files) {
  console.log('mockServer restarted due to: ', files);
});
複製代碼

運行結果

仍是熟悉的接口,仍是不同的味(數)道(據),我沒有手動重啓服務哦O(∩_∩)O哈哈~,是否是很方便。

圖片描述
圖片描述

參考資料

  • https://github.com/nuysoft/Mock/wiki
  • https://github.com/remy/nodemon/blob/master/doc/requireable.md
相關文章
相關標籤/搜索