详解express + mock让前后台并行开发

作者:kanshouji911 时间:2024-05-03 15:54:35 

在我们平时项目刚启动时,由于后台也是刚开始开发,我们前端往往在开发过程中没有数据和接口请求的,都要造一些假数据进去或者使用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 或者单独一个命令窗口运行

好了介绍到此。希望对大家的学习有所帮助,也希望大家多多支持asp之家。

来源:https://segmentfault.com/a/1190000015185715

标签:express,mock,并行
0
投稿

猜你喜欢

  • Python包资源下载路径报404解决方案

    2021-01-22 15:38:35
  • pandas数据预处理之dataframe的groupby操作方法

    2022-07-07 19:27:56
  • sql如何实现复合查询?

    2010-05-19 21:25:00
  • Vue $emit()不能触发父组件方法的原因及解决

    2024-05-28 16:10:26
  • Server 对象 错误 ASP 0177 800401f3 的解决方案 Server 对象 错误 ASP 0177 800401f3

    2009-07-28 17:57:00
  • 怎样安全地关闭MySQL实例

    2024-01-20 02:39:20
  • document.createElement()用法及注意事项

    2008-04-21 15:16:00
  • Python opencv应用实现图片切分操作示例

    2021-12-25 03:45:39
  • Python 打印自己设计的字体的实例讲解

    2021-04-24 14:45:21
  • golang执行命令操作 exec.Command

    2024-04-26 17:31:20
  • Python实现k-means算法

    2023-07-01 22:06:53
  • Python3之简单搭建自带服务器的实例讲解

    2022-03-05 20:50:33
  • python判断元素是否存在的实例方法

    2021-02-24 23:20:08
  • pandas 添加空列并赋空值案例

    2022-12-04 13:48:16
  • 详解python里使用正则表达式的分组命名方式

    2023-10-16 22:02:17
  • javascript中实现override,overload和类似c#中的property

    2008-05-16 12:01:00
  • python爬虫实现POST request payload形式的请求

    2023-11-07 21:08:55
  • Python文件处理与垃圾回收机制详情

    2023-06-14 16:36:17
  • Python猜解网站数据库管理员密码的脚本

    2024-01-23 16:55:02
  • python 实现图像快速替换某种颜色

    2021-07-20 03:16:13
  • asp之家 网络编程 m.aspxhome.com