资讯专栏INFORMATION COLUMN

express + mock 让前后台并行开发

lansheng228 / 3179人阅读

摘要:下面来介绍一种让前后台并行开发。服务在端口上已启用我们需要在同级目录添加以下文件中的内容如下访问时查询成功张三访问时我们现在在浏览器中访问我们初步模拟数据基本就完成了。

</>复制代码

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

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

</>复制代码

  1. app.js

</>复制代码

  1. "use strict";
  2. const express = require("express");
  3. const app = express();
  4. // port
  5. let NODE_PORT = process.env.PORT || 4000;
  6. // 监听 /user
  7. app.use("/user", function(req, res) {
  8. // 让接口 500-1000ms 返回 好让页面有个loading
  9. setTimeout(() => {
  10. res.json({
  11. status: 1,
  12. msg: "查询成功",
  13. data: {
  14. name: "张三"
  15. }
  16. });
  17. }, Math.random() * 500 + 500);
  18. });
  19. app.listen(NODE_PORT, function() {
  20. console.log("mock服务在" + NODE_PORT + "端口上已启用!");
  21. });

接下来我们当前文件打开命令窗口运行 node app.js
然后打开浏览器 输入 http://localhost:4000/user

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

如果我们在本地开发中有时候 端口不同会报跨域问题,所以我们需要在 app.js 添加一下代码

</>复制代码

  1. const cors = require("cors");
  2. app.use(cors({
  3. origin: "*",
  4. methods: ["GET", "POST", "PUT", "DELETE"],
  5. allowedHeaders: ["conten-Type", "Authorization"]
  6. }));

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

如果我们需要访问一些静态文件的可以添加一下代码

</>复制代码

  1. // "./" 根据自己的需求自己配置
  2. app.use(express.static(path.join(__dirname, "./")));

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

</>复制代码

  1. app.js

</>复制代码

  1. "use strict";
  2. const express = require("express");
  3. const cors = require("cors");
  4. const path = require("path");
  5. const userRoutes = require("./user");
  6. const areaRoutes = require("./area");
  7. const nameListRoutes = require("./name-list");
  8. const app = express();
  9. app.use(cors({
  10. origin: "*",
  11. methods: ["GET", "POST", "PUT", "DELETE"],
  12. allowedHeaders: ["conten-Type", "Authorization"]
  13. }));
  14. // port
  15. let NODE_PORT = process.env.PORT || 4000;
  16. app.use(express.static(path.join(__dirname, "./")));
  17. app.use("/user", userRoutes);
  18. app.use("/area", areaRoutes);
  19. app.use("/nameList", nameListRoutes);
  20. app.listen(NODE_PORT, function() {
  21. console.log("mock服务在" + NODE_PORT + "端口上已启用!");
  22. });

我们需要在同级目录添加以下文件
./user/index.js , /user/area.js, /name-list/index.js

./user/index.js 中的内容如下

</>复制代码

  1. "use strict";
  2. const express = require("express");
  3. const Mock = require("mockjs");
  4. const apiRoutes = express.Router();
  5. let random = Math.random() * 500 + 500;
  6. // 访问 /user/
  7. apiRoutes.get("/", function(req, res) {
  8. setTimeout(() => {
  9. res.json({
  10. status: 1,
  11. msg: "查询成功",
  12. data: {
  13. name: "张三"
  14. }
  15. });
  16. }, random);
  17. });
  18. // 访问 /user/1111 时
  19. apiRoutes.get("/idList", function(req, res) {
  20. setTimeout(() => {
  21. res.json({
  22. status: 1,
  23. msg: "OK",
  24. data: Mock.mock({
  25. "list|1-10": [{
  26. "id|+1": 1
  27. }]
  28. })
  29. });
  30. }, random);
  31. });
  32. module.exports = apiRoutes;

我们现在在浏览器中访问

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

接下需要在项目中用了

先区分环境

</>复制代码

  1. // 判断是否是本地开发
  2. const isDev = process.env.NODE_ENV ==="development";
  3. // 设置 host 本地走mock 生产环境走相对路径 /user/
  4. const host = isDev ? "http://localhost:4000" : ""
  5. fetch(`${host}/user/`)
  6. .then(response => {
  7. return response.json();
  8. })
  9. .then(data => {
  10. console.log(data );
  11. });

假设我们在本地访问

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

跨域问题也OK。

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

好了介绍到此。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107976.html

相关文章

  • QuickMock:基于Express的快速mock平台

    摘要:并将请求通过特定的,开发环境指定到对应的本地文件。联调或者生产环境发布前,再修改特定的。联调发布前,也同样需要将关键代码进行处理,将请求真正发送到后端服务器中,而不是被拦截到。项目列表项目面板,展示已存在的所有项目。 前言 感兴趣的话,可以star关注支持下,项目地址。 在日常的开发中,前端mock后端api数据,是实现前后端并行开发非常重要的一步。有了数据,才能更加真实反馈实际操作流...

    mdluo 评论0 收藏0
  • 基于webpack的前后端分离开发环境实战

    摘要:背景随着互联网应用工程规模的日益复杂化和精细化,我们在开发一个标准应用的早已开始告别单干模式,为了提升开发效率,前后端分离的需求越来越被重视,前端负责展现交互逻辑,后端负责业务数据接口,基本上也成为了我们日常项目分工中的标配,但是前后端分离 背景 随着互联网应用工程规模的日益复杂化和精细化,我们在开发一个标准web应用的早已开始告别单干模式,为了提升开发效率,前后端分离的需求越来越被重...

    soasme 评论0 收藏0
  • 浅谈前后端分离与实践(一)

    摘要:前后端的界限是按照浏览器和服务器的划分。前后端彼此互不关联。关于作者本文部分图片段落参考文章实践中的前后端分离。淘宝前后端分离实践本文源码详见服务端代码。 一、起源 (故事纯属虚构,如有雷同,纯属巧合)传说在很久很久以前,我们有志之士有了个创业的想法,于是乎开始了自己的创业之梦,但是人手不足啊,于是乎所有角色老子一个人全包了: Roles: PM, DBA, RD, FED, Des...

    dantezhao 评论0 收藏0
  • 浅谈前后端分离与实践(一)

    摘要:前后端的界限是按照浏览器和服务器的划分。前后端彼此互不关联。关于作者本文部分图片段落参考文章实践中的前后端分离。淘宝前后端分离实践本文源码详见服务端代码。 一、起源 (故事纯属虚构,如有雷同,纯属巧合)传说在很久很久以前,我们有志之士有了个创业的想法,于是乎开始了自己的创业之梦,但是人手不足啊,于是乎所有角色老子一个人全包了: Roles: PM, DBA, RD, FED, Des...

    yy13818512006 评论0 收藏0

发表评论

0条评论

lansheng228

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<