关于
最近准备开发一款web应用,考虑到可能会有前后端并行开发的场景,所以决定使用mockjs做mock server。
浏览官网文档时发现没有跑在webpack上的例子,索性自己找方法解决。
什么是mockjs?他的使用场景是什么?
当前端工程师需要独立于后端并行开发时,后端接口还没有完成,那么前端怎么获取数据?
这时可以考虑前端搭建web server自己模拟假数据,mockjs用来生成随机数据,拦截 Ajax 请求。
正文:如何改造vue-cli,将mockjs嵌入到webpack?
vue项目初始化
- 安装vue-cli脚手架工具,并初始化项目
//全局安装 vue-cli npm install vue-cli -g //创建一个基于 webpack 模板的新项目 vue init webpack mock-server-demo //切换至mock-server-demo目录 cd mock-server-demo复制代码
- 安装依赖
//我们使用axios来发起http请求 npm install axios --save //安装依赖mockjs npm install mockjs --save-dev复制代码
搭建web server,响应浏览器的http请求
web server不需要自己搭建或者另外安装依赖,在webpack-dev-server中已经封装好了,我们只需要直接那过来用就可以了。
- 在项目根路径下创建mock文件夹,并创建图片中mock文件夹中的几个文件
- index.js 文件
const Mock = require('mockjs');//mockjs 导入依赖模块 const util = require('./util');//自定义工具模块 //返回一个函数 module.exports = function(app){ //监听http请求 app.get('/user/userinfo', function (rep, res) { //每次响应请求时读取mock data的json文件 //util.getJsonFile方法定义了如何读取json文件并解析成数据对象 var json = util.getJsonFile('./userInfo.json'); //将json传入 Mock.mock 方法中,生成的数据返回给浏览器 res.json(Mock.mock(json)); }); }复制代码
- util.js 文件
const fs = require('fs');//引入文件系统模块 const path = require('path');//引入path模块 module.exports = { //读取json文件 getJsonFile:function (filePath) { //读取指定json文件 var json = fs.readFileSync(path.resolve(__dirname,filePath), 'utf-8'); //解析并返回 return JSON.parse(json); } }; 复制代码
- userInfo.json 文件
{ "error":0, "data":{ "userid": "@id()