详解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 相关文章推荐
location.href语句与火狐不兼容的问题
Jul 04 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
jquery 插件学习(五)
Aug 06 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
jQuery实现自动调用和触发某个事件的方法
Nov 18 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 Javascript
JS实现仿百度文库评分功能
Jan 12 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
JS内置对象和Math对象知识点详解
Apr 03 Javascript
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 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输出XML到页面的3种方法详解
2013/06/06 PHP
php汉字转拼音的示例
2014/02/27 PHP
php实现通过ftp上传文件
2015/06/19 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
json 实例详细说明教程
2009/10/31 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
基于python实现模拟数据结构模型
2020/06/12 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
正规的求职信范文分享
2013/12/11 职场文书
生日派对邀请函
2014/01/13 职场文书
拓展策划方案
2014/06/03 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
2016猴年春节问候语
2015/11/11 职场文书
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android