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 相关文章推荐
jquery 操作DOM案例代码分享
Apr 05 Javascript
JavaScript设计模式之抽象工厂模式介绍
Dec 28 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
bootstrap3 兼容IE8浏览器!
May 02 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
javascript cookie的基本操作(添加和删除)
Jul 24 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
js实现下拉框二级联动
Dec 04 Javascript
vue数据初始化initState的实例详解
Apr 11 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
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
python3生成随机数实例
2014/10/20 Python
Django中处理出错页面的方法
2015/07/15 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
外企办公室竞聘演讲稿
2013/12/29 职场文书
水电站项目建议书
2014/05/12 职场文书
运动会开幕词
2015/01/28 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
python本地文件服务器实例教程
2021/05/02 Python
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫
Python pyecharts绘制条形图详解
2022/04/02 Python