express + mock 让先后台并行开发

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

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

先后须要先商量好数据格式,等等一系列细节问题,先很少说直接上代码javascript

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前端

clipboard.png

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

若是咱们在本地开发中有时候 端口不一样会报跨域问题,因此咱们须要在 app.js 添加一下代码node

const cors = require('cors');
app.use(cors({
  origin: '*',
  methods: ['GET', 'POST', 'PUT', 'DELETE'],
  allowedHeaders: ['conten-Type', 'Authorization']
}));

这样就能够在别的端口访问或者别的ip内网(你同时)访问了。express

若是咱们须要访问一些静态文件的能够添加一下代码json

// './' 根据本身的需求本身配置
app.use(express.static(path.join(__dirname, './')));

// 配置nodeman热更新
nodemon 能够按照需求本身配置
接下来继续完善, 在开发中咱们不可能只有一个接口,因此咱们在优化下。api

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']
}));

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

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.pngapp

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 或者单独一个命令窗口运行

好了介绍到此。

相关文章
相关标签/搜索