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-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
Jan 19 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 Javascript
学习使用jquery iScroll.js移动端滚动条插件
Mar 24 Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
jQuery plugin animsition使用小结
Sep 14 jQuery
JS实现websocket长轮询实时消息提示的效果
Oct 10 Javascript
原生js实现密码强度验证功能
Mar 18 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 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
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
php 删除cookie方法详解
2014/12/01 PHP
php发送邮件的问题详解
2015/06/22 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP时间处理类操作示例
2018/09/05 PHP
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
基于python使用tibco ems代码实例
2019/12/20 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
财务学生的职业生涯发展
2014/02/11 职场文书
毕业留言寄语大全
2014/04/10 职场文书
快递员岗位职责
2014/09/12 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python