搭建本地 mock 服务器 —为了更好的前端开发
工作中,有时候前端的很多工作需要后端的支持,但是可能后端的接口还没有开发完,或者有些时候在联调阶段,修复某个 bug 的时候,环境挂了。。。 那么这个时候,我们的很多工作无法顺利的进行下去。于是萌生了搭建本地服务器的想法。
首先粗略的说一下它的好处
- 前端更加独立,在开发阶段对于后端的依赖性大大降低。
- 联调和开发截断,对于新增加的接口,只需要后端提供接口文档就好,不需要等到他们真正的开发完成,前端就可以自己进入联调。
- 修复和定位 bug 更加便捷,自测阶段中对于某些极端的边界条件,我们自己就可以实现构造数据,模拟边界条件。
mock 数据的方式(这里我提供了三种,可自行选择)
在线 mock 网址: Easy mock (缺点: 当需要修改大量数据和新增很多 api 的时候,比较繁琐)
jsonserver+gulp 实现( 缺点:大部分需求都能满足,但是对于需要动态解析参数的接口,支持的不够完美 )
node+express 实现 ( 可实现几乎所有接口的情况,但是配置起来比第二种麻烦 )
EasyMock
官网提供详细的文档和说明,上手比较快,但是对于保密性比较强的公司,建议舍弃这种方式。
JsonServer+Gulp+MockJs
技术选型
- JsonSever 开启端口,提供服务。
- Gulp 实现监听文件和热更新的功能。
- MockJs 一个成熟的 mock 数据平台,通过其提供的 api,可以快速的生成大量测试数据。
- babel 配置 es6语法。
项目目录预览
介绍
- api 为数据文件夹,配置不同的项目所需要的不同接口以及其返回值,在 index中进行继承 然后暴露给 mock/db 下 最后暴露给 server。(这个可以自行更改,只要最后暴露出去就可以
api/project.projectOne
1 | let projectOne = { |
api/index (支持 es5 和 es6共存写法)
1 | const test = require('./test/test.js') |
- mock 文件夹 集中 mock 平台,我们想要通过 mock
平台生成的接口放在这个文件夹。
mock/db.js
1 | // var Mock = require('mockjs') |
- router文件夹 大致结构和 api 文件夹相似,暴露路由(支持 es6 和 es5 的写法共存)
1 | import test from './test/test' |
router/project/projectOne
1 | module.exports = { |
- gulpfile 提供监听文件和接口热更新的功能
- main.js 中 提供babel 配置 es6 的写法
- server.js 中 启动端口,配置路由和接口返回值。
运行预览
如何运行?
1 | git clone https://github.com/majunchang/localMock.git |
在查询了关于jsonserver 的 router 配置方式以后,总感觉对于动态执行参数的接口支持的不太好,于是就有了 nodemock(什么分页,什么查询等,处理起来就是一把梭! 复制粘贴 就是刚!)
NodeMock(node+express+嗯?…)
项目目录
- api 配置接口以及接口返回值(类似与上面的 localmock 的配置)
api/projectOne
1 | import Mock from 'mockjs' |
- controller 配置动态查询参数的请求 示例中给出了 get 和 post 的两种情况
controller/project.js
1 | import Mock from 'mockjs' |
- router 中为路由配置
- app.js 启动端口服务,接受路由和接口配置
- main.js babel 配置es6 语法
运行预览
这个项目,没有预览所有接口的功能。感兴趣的读者可以自己添加(当访问指定链接时,获取router 中的信息 进行展示出来,解决方法不唯一,可以查文档 自己添加)。
项目启动
1 |
|
End
文章如有错误和不正之处,欢迎指正和批评,同时也希望大家多多支持,非常感谢。