博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
express + mock 让前后台并行开发
阅读量:7231 次
发布时间:2019-06-29

本文共 2886 字,大约阅读时间需要 9 分钟。

在我们平时项目刚启动时,由于后台也是刚开始开发,我们前端往往在开发过程中没有数据和接口请求的,都要造一些假数据进去或者使用mock造一些数据进去,但是这样的话往往会偶合一些没用的代码进去。到时候还得删除。

下面来介绍一种 express + mock 让前后台并行开发。

前后需要先商量好数据格式,等等一系列细节问题,先不多说直接上代码

app.js
'use strict';const express = require('express');const app = express();// portlet NODE_PORT = process.env.PORT || 4000;// 监听 /userapp.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

然后打开浏览器 输入 :4000/user

clipboard.png

就完成了一个简单的模拟数据,接下来我们完善下需求

如果我们在本地开发中有时候 端口不同会报跨域问题,所以我们需要在 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热更新

nodemon 可以按照需求自己配置
接下来继续完善, 在开发中我们不可能只有一个接口,所以我们在优化下。

app.js
'use strict';const express = require('express');const cors = require('cors');const path = require('path');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']}));// portlet 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);app.listen(NODE_PORT, function() {  console.log('mock服务在' + NODE_PORT + '端口上已启用!');});

我们需要在同级目录添加以下文件

./user/index.js , /user/area.js, /name-list/index.js

clipboard.png

./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;

我们现在在浏览器中访问

clipboard.png

clipboard.png

我们初步模拟数据基本就完成了。

接下需要在项目中用了

先区分环境

// 判断是否是本地开发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 );  });

假设我们在本地访问

clipboard.png

数据都能拿到了, 在试一下 别的域名访问

clipboard.png

跨域问题也OK。

我们在设置下 package.json 在你本地开发的命令后台添加 && node xx/aap.js 或者单独一个命令窗口运行

好了介绍到此。

转载地址:http://qucfm.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
TCP/IP协议及首部初了解
查看>>
防火墙iptables
查看>>
CUDA搭建
查看>>
memcached与PostgreSQL缓存命中机制
查看>>
百度地图路线检索(3)
查看>>
linux netstat 命令详解
查看>>
对前几篇blog的环境等的补充说明
查看>>
Curl命令使用解析大全
查看>>
MySQL日期函数
查看>>
【00】Effective Java
查看>>
.NET重构—单元测试重构
查看>>
SMB简介sabma服务(一)
查看>>
ANT简明教程
查看>>
Eclipse Luna WTP 与 Tomcat 8 的整合存在一个很头疼的 Bug
查看>>
小数在计算机里面的存放
查看>>
数据结构中的各种树简单解释
查看>>
我的朗科运维第七课
查看>>
CentOS的进程管理二
查看>>
https客户端证书导入
查看>>