刚开始接触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哈哈~,是否是很方便。