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 相关文章推荐
让div层随鼠标移动的实现代码 ie ff
Dec 18 Javascript
JavaScript中的isXX系列是否继续使用的分析
Apr 16 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
js 遍历json返回的map内容示例代码
Oct 29 Javascript
jquery 显示*天*时*分*秒实现时间计时器
May 07 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 Javascript
layer实现弹窗提交信息
Dec 12 Javascript
vue2的todolist入门小项目的详细解析
May 11 Javascript
React diff算法的实现示例
Apr 20 Javascript
JS正则表达式常见用法实例详解
Jun 19 Javascript
vue模块移动组件的实现示例
May 20 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过滤危险html代码
2008/08/18 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
别了 JavaScript中的isXX系列
2012/08/01 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
vue组件间通信子与父详解(二)
2017/11/07 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
python中管道用法入门实例
2015/06/04 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python实现对adb命令封装
2020/03/06 Python
Python selenium自动化测试模型图解
2020/04/15 Python
python中封包建立过程实例
2021/02/18 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
C#实现启动一个进程
2016/10/01 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
自我评价格式
2014/01/06 职场文书
小学生打架检讨书
2014/01/26 职场文书
花店创业计划书范文
2014/02/07 职场文书
遗产继承公证书
2014/04/09 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android