详解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 相关文章推荐
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
PHP结合jQuery实现红蓝投票功能特效
Jul 22 Javascript
在jQuery中处理XML数据的大致方法
Aug 14 Javascript
ES6的新特性概览
Mar 10 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 Javascript
JS和Canvas实现图片的预览压缩和上传功能
Mar 30 Javascript
详解如何理解vue的key属性
Apr 14 Javascript
关于在LayUI中使用AJAX提交巨坑记录
Oct 25 Javascript
angular4实现带搜索的下拉框
Mar 25 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
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
vue实现评论列表功能
2019/10/25 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python如何给函数库增加日志功能
2020/08/04 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
如何使用PHP session
2015/04/21 面试题
酒吧总经理岗位职责
2013/12/10 职场文书
力学专业求职信
2014/07/23 职场文书
2014和解协议书范文
2014/09/15 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
承诺书范本大全
2015/05/04 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
MySQL基础(二)
2021/04/05 MySQL
详解Vue的options
2021/05/15 Vue.js
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL