详解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 到 JQuery (1)学习小结
Feb 12 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
原生JS实现贪吃蛇小游戏
Mar 09 Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 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调用shell的方法
2014/11/05 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
Javascript中的apply()方法浅析
2015/03/15 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
python算法表示概念扫盲教程
2017/04/13 Python
numpy.array 操作使用简单总结
2019/11/08 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
中专生自我鉴定书范文
2013/12/28 职场文书
英语教师求职信
2014/06/16 职场文书
心得体会的写法
2014/09/05 职场文书
2014年团支书工作总结
2014/11/14 职场文书
具结保证书
2015/01/17 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers