详解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实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
JavaScript函数表达式详解及实例
May 05 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
Aug 10 Javascript
基于JavaScript实现淘宝商品广告效果
Aug 10 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
May 12 Javascript
浅析 Vue 3.0 的组装式 API(一)
Aug 31 Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 Javascript
react使用antd表单赋值,用于修改弹框的操作
Oct 29 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
nuxt.js 缓存实践
2018/06/25 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
python实现简单文件读写函数
2021/02/25 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
个人实习生的自我评价
2014/02/16 职场文书
大学生党员承诺书
2014/05/20 职场文书
特教教师先进事迹
2014/05/21 职场文书
大学生党员自我评价
2015/03/04 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技