剛開始接觸vue-cli,發現用它生成的框架代碼是缺乏Mock模擬的,因而本身摸索了許久,將本身的摸索的結果經過過程記錄下來,但願對別人有所幫助,能少走彎路。javascript
這不是關於vue-cli的,是單純的模擬數據服務
這不是關於vue-cli的,是單純的模擬數據服務
這不是關於vue-cli的,是單純的模擬數據服務
vue
同時但願得到更好的解決方案,有更好方案的不要吝嗇分享啊。java
過程變化node
projectgit
用到的node_modulesgithub
代碼以下mockServer.js
ajax
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服務實現了,可是想一想加入後期接口數量增長,那代碼函數豈不是函數式增加!!!∑(゚Д゚ノ)ノ。還能不能愉快的維護了。正則表達式
因此改良版就來了,這裏我經過多個json文件來模擬多個請求的數據,經過一個配置文件來映射文件和接口vue-cli
用到的模塊express
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" }
通過上面的修改,終於不用寫那麼多行代碼了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哈哈~,是否是很方便。