详解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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
关于javascript 回调函数中变量作用域的讨论
Sep 11 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
JavaScript保留两位小数的2个自定义函数
May 05 Javascript
Javascript对象Clone实例分析
Jun 09 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
Dec 02 Javascript
AngularJS 遇到的小坑与技巧小结
Jun 07 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
详解JavaScript中的数组合并方法和对象合并方法
May 11 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
springboot+vue实现文件上传下载
Nov 17 Vue.js
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技巧与注意事项分析
2011/02/03 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
JavaScript 异步调用
2017/10/25 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
Python中使用SAX解析xml实例
2014/11/21 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python交互界面的退出方法
2019/02/16 Python
Python实现代码块儿折叠
2020/04/15 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
送货司机岗位职责
2013/12/11 职场文书
婚礼司仪主持词
2014/03/14 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
环保公益策划方案
2014/08/15 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
导游词幽默开场白
2019/06/26 职场文书
mysql部分操作
2021/04/05 MySQL
MySQL慢查询的坑
2021/04/28 MySQL
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL