express+mockjs实现模拟后台数据发送功能


Posted in Javascript onJanuary 07, 2018

前言:

大多数时候,前端会和后端同时进行开发,即在我们开发完页面的时候,很可能还不能立马进入联调阶段,这个时候,为了保证我们接口的有效性和代码的功能完整,我们可能需要模拟数据。

模拟数据方法

1.通过js变量模拟后台数据

优点:不需要服务器

缺点:需要造很多变量,同时还要将变量在我们的有效代码中使用,最后还得删除

2.通过ajax请求json文件

优点:只需要配置路径,就可以访问,进入联调阶段不用修改大量的js代码

缺点:ajax存在跨域问题,通常无法请求本地文件,即使火狐也存在不能访问不同文件目录下的json文件,通常需要通过ide或者自己手动启动服务

3.用nodejs自己写一个专门用来发送请求的服务,不包含业务逻辑

优点:前端的代码进入联调阶段只需要修改一个basePath,所有的接口名字都可以和约定好的路径保持一致,可以测试post请求,模拟网络环境

缺点:自己要写一个后台

1、2两种模拟数据的方式适合用来做demo,但是如果做得是上线项目,我们还是推荐使用自己搭建一个node后台

1.准备node环境、npm/cnpm

2.安装express、mockjs

express+mockjs实现模拟后台数据发送功能

3.创建服务端文件server.js,引入相关模块

let express = require('express'); //引入express模块
let Mock = require('mockjs');  //引入mock模块
let app = express();    //实例化express

4.配置接口路由,设置监听端口

/**
 * 配置test.action路由
 * @param {[type]} req [客户端发过来的请求所带数据]
 * @param {[type]} res [服务端的相应对象,可使用res.send返回数据,res.json返回json数据,res.down返回下载文件]
 */
app.all('/test.action', function(req, res) {
 res.send('hello world');
});
/**
 * 监听8090端口
 */
app.listen('8090');

此时我们直接访问http://localhost:8090/test.action,就可以直接在界面看到'hello world'文字

5.使用mockjs返回格式化json数据

app.all('/test.action', function(req, res) {
 /**
  * mockjs中属性名‘|'符号后面的属性为随机属性,数组对象后面的随机属性为随机数组数量,正则表达式表示随机规则,+1代表自增
  */
 res.json(Mock.mock({
  "status": 200,
  "data|1-9": [{
   "name|5-8": /[a-zA-Z]/,
   "id|+1": 1,
   "value|0-500": 20
  }]
 }));
});

此时我们再访问页面数据,我们就可以得到一份随机的json数据

6.创建模拟数据文件夹testData,创建模拟数据json文件(注意:json文件中不能使用正则,且对象属性必须为双引号字符串)

7.遍历模拟数据文件,生成对应路由

/*readdir读取目录下所有文件*/
fs.readdir('./testData', function(err, files) {
 if(err) {
  console.log(err);
 } else {
  /*成功读取文件,取得文件名,拼接生成对应action,监听对应接口并返回对应文件数据*/
  files.forEach(function(v, i) {
   app.all(`/${v.replace(/json/, 'action')}`, function(req, res) {
    fs.readFile(`./testData/${v}`, 'utf-8', function(err, data) {
     if(err) {
      console.log(err);
     } else {
      res.json(Mock.mock(JSON.parse(data)));
     }
    })
   })
  })
 }
})

至此,我们的node服务器已经搭建成功,使用node server.js运行服务器,我们就可以直接在前端访问接口,但是如果只是单纯的生成后台,前端页面不通过后台进行访问的话,存在跨域问题,如果需要解决,可以在后台添加跨域请求

/*为app添加中间件处理跨域请求*/
app.use(function(req, res, next) {
 res.header("Access-Control-Allow-Origin", "*");
 res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
 res.header("Access-Control-Allow-Headers", "X-Requested-With");
 res.header('Access-Control-Allow-Headers', 'Content-Type');
 next();
});

ps:如果mock需要使用正则,请单独配置路由进行处理,express和mockjs更多指令,请查阅官网api

总结

以上是小编给大家介绍的express+mockjs实现模拟后台数据发送功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Javascript中产生固定结果的函数优化技巧
Jan 16 Javascript
jQuery新的事件绑定机制on()示例应用
Jul 18 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
JavaScript 事件入门知识
Apr 13 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
BootStrap table表格插件自适应固定表头(超好用)
Aug 24 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
Jan 19 Javascript
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
移动端效果之IndexList详解
Oct 20 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
浅析vue深复制
Jan 29 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 #Javascript
使用 Node.js 开发资讯爬虫流程
Jan 07 #Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 #Javascript
12条写出高质量JS代码的方法
Jan 07 #Javascript
js数组方法reduce经典用法代码分享
Jan 07 #Javascript
javascript中的replace函数(带注释demo)
Jan 07 #Javascript
基于JavaScript实现简单的音频播放功能
Jan 07 #Javascript
You might like
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
php命令行模式代码实例详解
2021/02/26 PHP
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python 实现多维数组(array)排序
2020/02/28 Python
python 常见的排序算法实现汇总
2020/08/21 Python
python跨文件使用全局变量的实现
2020/11/17 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
Python读写Excel表格的方法
2021/03/02 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
资料员岗位职责
2013/11/17 职场文书
职业规划书如何设计?
2014/01/09 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
2014年派出所工作总结
2014/11/21 职场文书
暂住证证明
2015/06/19 职场文书
话题作文之呼唤
2019/12/18 职场文书
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL