mockjs,json-server一起搭建前端通用的数据模拟框架教程


Posted in Javascript onDecember 18, 2017

无论是在工作,还是在业余时间做前端开发的时候,难免出现后端团队还没完成接口的开发,而前端团队却需要实现对应的功能,不要问为什么,这是肯定存在的。本篇文章就是基于此原因而产出的。希望对有这方面的需求的同志有所帮助。

一、使用的组件包

1. mockjs:用于模拟查询结果

2. json-server:搭建模拟服务器,以及模拟CRUD的相关操作接口

二、具体的实现1. 建立项目,并安装相应的依赖

cnpm install --save-dev mockjs json-server

上述命令为安装依赖,下图为项目结果:

mockjs,json-server一起搭建前端通用的数据模拟框架教程

说明:

data:此文件夹存放的为利用mockjs模拟的查询结果,dataProvider后面单独简单

lib:包含的一个jquery文件,用于模拟ajax请求用

route:json-server的路由表,用于模拟crud操作用,没搞清楚如何实现多个db.json

index.js:模拟服务器入口文件

test.html:测试cors

2. 搭建基础的json-server服务器

var JsonServer = require('json-server');
var path = require('path')

var Server = JsonServer.create();
var defaultMid = JsonServer.defaults({
 "noCors": false,
 "static": path.join(__dirname, "/lib")
});

var router = JsonServer.router(path.join(__dirname, '/route/db.json'));

Server.use(defaultMid);
Server.use(router);
Server.listen(8009);
console.log('start 8009.....');

此部分内容完全按照json-server的官方说明编写,值得注意的是static和noCors的设置,他是作为一个中间件来完成的。

3. 增加mockjs的应用

在这里mockjs只作为参生数据的基石,而dataProvider.js却提供了统一外部访问接口的能力。也就是把模拟数据以module(相当于mvc中的controller)和func(相当于mvc中的action)来进行分隔。不知这种实现是否可行(本人现在项目中暂时是这样使用的。)

3.1 首先,在data文件夹中建立emp.js文件,编写了如下内容:

 

var mockjs = require('mockjs');

module.exports = {
 list: function(){ 
 var data = mockjs.mock({
 'list|3':[
 {
  'id|+1':1
 }
 ]
 });
 return data.list;
 }
}

 此处就是对mockjs的使用

3.2 dataProvider使用实现模块的收集

var emp = require('./emp');

var moduels = {
 emp: emp
}

module.exports = {
 execute: function(m, f, args){
 return moduels[m][f].call(moduels[m], args);
 }
}

 3.3 json中增加get方法,用于获取数据

var provider = require('./data/dataProvider');

Server.get('/data',function(req,res){
 var moduleName = req.body ? req.body.moduleName : req.query.moduleName;
 var funName = req.body ? req.body.funName : req.query.funName;
 var arg = null;
 res.json(provider.execute(moduleName, funName));
 res.end();
});

如果要访问emp下的List,则地址为:http://localhost:8009/data?moduleName=emp&funName=list

4. 总结

1. json-server的db.json文件只能有一个,这里可以配置多个数据实体,他是以get为获取,post为写入http协议来实现数据的CRUD的

看到这里,你是否有感觉到搭建一个数据模拟服务器如此简单,当然只是webapi的。下载示例代码

以上这篇mockjs,json-server一起搭建前端通用的数据模拟框架教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript URL编码和解码使用说明
Apr 12 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
学习JavaScript设计模式之享元模式
Jan 18 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
原生js封装的一些jquery方法(详解)
Sep 20 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
Mar 21 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
JS对象和字符串之间互换操作实例分析
Feb 02 Javascript
基于redis的小程序登录实现方法流程分析
May 25 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
Dec 18 #Javascript
vue的无缝滚动组件vue-seamless-scroll实例
Dec 18 #Javascript
分析JavaScript数组操作难点
Dec 18 #Javascript
微信小程序基于本地缓存实现点赞功能的方法
Dec 18 #Javascript
JavaScript模块详解
Dec 18 #Javascript
webpack打包js文件及部署的实现方法
Dec 18 #Javascript
react+redux的升级版todoList的实现
Dec 18 #Javascript
You might like
PHP文件上传原理简单分析
2011/05/29 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
js常用代码段整理
2011/11/30 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
详谈$.data()的用法和作用
2017/02/13 Javascript
js中this对象用法分析
2018/01/05 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
JS中的函数与对象的创建方式
2019/05/12 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
python根据文件大小打log日志
2014/10/09 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python的中异常处理机制
2018/08/30 Python
Python实现多属性排序的方法
2018/12/05 Python
python文件写入write()的操作
2019/05/14 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
python中entry用法讲解
2020/12/04 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
木工主管岗位职责
2013/12/08 职场文书
学校班班通实施方案
2014/06/11 职场文书
讲文明倡议书
2015/04/29 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书