详解express + mock让前后台并行开发


Posted in Javascript onJune 06, 2018

在我们平时项目刚启动时,由于后台也是刚开始开发,我们前端往往在开发过程中没有数据和接口请求的,都要造一些假数据进去或者使用mock造一些数据进去,但是这样的话往往会偶合一些没用的代码进去。到时候还得删除。

下面来介绍一种 express + mock 让前后台并行开发。

前后需要先商量好数据格式,等等一系列细节问题,先不多说直接上代码

app.js

'use strict';

const express = require('express');
const app = express();

// port
let NODE_PORT = process.env.PORT || 4000;
// 监听 /user
app.use('/user', function(req, res) {
 // 让接口 500-1000ms 返回 好让页面有个loading
 setTimeout(() => {
 res.json({
  status: 1,
  msg: '查询成功',
  data: {
   name: '张三'
  }
 });
 }, Math.random() * 500 + 500);
});

app.listen(NODE_PORT, function() {
 console.log('mock服务在' + NODE_PORT + '端口上已启用!');
});

接下来我们当前文件打开命令窗口运行 node app.js

然后打开浏览器 输入 http://localhost:4000/user

详解express + mock让前后台并行开发

就完成了一个简单的模拟数据,接下来我们完善下需求

如果我们在本地开发中有时候 端口不同会报跨域问题,所以我们需要在 app.js 添加一下代码

const cors = require('cors');
app.use(cors({
 origin: '*',
 methods: ['GET', 'POST', 'PUT', 'DELETE'],
 allowedHeaders: ['conten-Type', 'Authorization']
}));

这样就可以在别的端口访问或者别的ip内网(你同时)访问了。

如果我们需要访问一些静态文件的可以添加一下代码

// './' 根据自己的需求自己配置
app.use(express.static(path.join(__dirname, './')));

// 配置nodeman热更新

var nodemon = require('nodemon');
nodemon({
 script: 'app.js',
 ext: 'json js',
 ignore: [
  '.git',
  'node_modules/**'
 ],
});

接下来继续完善, 在开发中我们不可能只有一个接口,所以我们在优化下。

app.js
'use strict';

const express = require('express');
const cors = require('cors');
const path = require('path');
var nodemon = require('nodemon');
const userRoutes = require('./user');
const areaRoutes = require('./area');
const nameListRoutes = require('./name-list');
const app = express();

app.use(cors({
 origin: '*',
 methods: ['GET', 'POST', 'PUT', 'DELETE'],
 allowedHeaders: ['conten-Type', 'Authorization']
}));

// port
let NODE_PORT = process.env.PORT || 4000;
app.use(express.static(path.join(__dirname, './')));

app.use('/user', userRoutes);
app.use('/area', areaRoutes);
app.use('/nameList', nameListRoutes);

nodemon({
 script: 'app.js',
 ext: 'json js',
 ignore: [
  '.git',
  'node_modules/**'
 ],
});

app.listen(NODE_PORT, function() {
 console.log('mock服务在' + NODE_PORT + '端口上已启用!');
});

我们需要在同级目录添加以下文件
./user/index.js , /user/area.js, /name-list/index.js

详解express + mock让前后台并行开发

./user/index.js 中的内容如下

'use strict';
const express = require('express');
const Mock = require('mockjs');
const apiRoutes = express.Router();

let random = Math.random() * 500 + 500;
// 访问 /user/ 时
apiRoutes.get('/', function(req, res) {
 setTimeout(() => {
  res.json({
   status: 1,
   msg: '查询成功',
   data: {
     name: '张三'
   }
  });
 }, random);
});
// 访问 /user/1111 时
apiRoutes.get('/idList', function(req, res) {
 setTimeout(() => {
  res.json({
   status: 1,
   msg: 'OK',
   data: Mock.mock({
      'list|1-10': [{
       'id|+1': 1
      }]
    })
  });
 }, random);
});

module.exports = apiRoutes;

我们现在在浏览器中访问

详解express + mock让前后台并行开发

详解express + mock让前后台并行开发

我们初步模拟数据基本就完成了。

接下需要在项目中用了

先区分环境

// 判断是否是本地开发
const isDev = process.env.NODE_ENV ==='development';
// 设置 host 本地走mock 生产环境走相对路径 /user/
const host = isDev ? 'http://localhost:4000' : ''

fetch(`${host}/user/`)
 .then(response => {
  return response.json();
 })
 .then(data => {
  console.log(data );
 });

假设我们在本地访问

详解express + mock让前后台并行开发

数据都能拿到了, 在试一下 别的域名访问

详解express + mock让前后台并行开发

跨域问题也OK。

我们在设置下 package.json 在你本地开发的命令后台添加 && node xx/aap.js 或者单独一个命令窗口运行

好了介绍到此。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript学习笔记9 prototype封装继承
Jan 11 Javascript
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
Vue.js组件tree实现省市多级联动
Dec 02 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
Sep 22 Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 Javascript
利用js实现简单开关灯代码
Nov 23 Javascript
vue element项目引入icon图标的方法
Jun 06 #Javascript
vue脚手架搭建过程图解
Jun 06 #Javascript
vue左右侧联动滚动的实现代码
Jun 06 #Javascript
Express本地测试HTTPS的示例代码
Jun 06 #Javascript
微信小程序仿美团城市选择
Jun 06 #Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 #jQuery
详解封装基础的angular4的request请求方法
Jun 05 #Javascript
You might like
一个php作的文本留言本的例子(一)
2006/10/09 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
Python面向对象编程基础实例分析
2020/01/17 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
行政前台岗位职责
2013/12/04 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
公司合作意向书
2014/04/01 职场文书
师德师风自查总结
2014/10/14 职场文书
小学端午节活动总结
2015/02/11 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
庆祝教师节主持词
2015/07/06 职场文书
python井字棋游戏实现人机对战
2022/04/28 Python