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 对象的定义方法
Jan 10 Javascript
JavaScript 闭包深入理解(closure)
May 27 Javascript
10个实用的脚本代码工具
May 04 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
Jquery getJSON方法详细分析
Dec 26 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
window.onerror()的用法与实例分析
Jan 27 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
详解vue express启动数据服务
Jul 05 Javascript
vue综合组件间的通信详解
Nov 06 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
js实现时间日期校验
2020/05/26 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
Python读写ini文件的方法
2015/05/28 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Python实现的堆排序算法示例
2018/04/29 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
django迁移文件migrations的实现
2020/03/31 Python
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
巴西在线鞋店:Shoestock
2017/10/28 全球购物
素质拓展感言
2014/01/29 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
先进个人材料怎么写
2014/12/30 职场文书
教师工作表现自我评价
2015/03/05 职场文书
2015年药店工作总结
2015/04/20 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
无线电知识基础入门篇
2022/02/18 无线电
Python中npy和mat文件的保存与读取
2022/04/24 Python