eggjs 打造 mock工具(一)项目的构建

214 阅读2分钟

这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

关于 egg 的基础,此处不做太多追述,如果不理解的可以看我之前写的文章---egg-从入门到上线

什么是mock

mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对模块的测试。

当后端的接口还未完成,前端为了不影响工作效率,实现前后端分离,手动模拟后端接口

通用的方案优点缺点
json书写简单,直接写一个js文件或者 json 文件,直接引入至项目中,完成后续代码编写无法模拟数据的增删改查
json-server模拟数据的增删改查不能随机生成所需数据
mockjs可随机生成所需数据,可模拟对数据的增删改查代码入侵至项目中,需要维护
apifox实现 mock 数据接口导入,可以直接导入 swagger 数据,代码入侵小随机的数据对于项目的展示不打友好
node-service通过 node 完成项目中的 mock 工具,自由度和数据完成极高编写代码需要时间成本

项目的初衷

遇到项目中需要完整的演示出、上传、增删改查功能,对于后端接口的完成需要很长的一段时间(不确定的因素),产生了这个项目的初衷。所以如果你的项目,迭代紧凑,请谨慎选择。

关于数据存储设计

这一点考虑过 MongoDB、MySQL 等数据设计、但是根据业务场景出发,如果不能提供给我们数据库,那么该怎么办呢?那么我们就可以考虑通过做一个本地的 json 数据的增删改查设计,一样可以实现项目的运转,也可以考虑后期项目的迁移。

项目构建

npm i egg-init -g
egg-init egg-mock --type=simple   //例如:egg-init 项目名称 --type=simple
cd egg-mock
npm i

运行

npm run dev  

image.png

你将会看到 hi-egg

部署

你仅仅需要将 NGINX 指向 127.0.0.1 即可完成部署

npm run start // 启用
npm run stop // 停止

编写第一个接口

首先 egg 的流程是什么

router(路由) -> controller(控制层) -> service(业务逻辑层)

在controller/user.js中写上

'use strict';

const Controller = require('egg').Controller;

class UserController extends Controller {
    async index() {
        const { ctx } = this;
        ctx.body = 'hi, user';
    }
}

module.exports = UserController;

router.js

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.get('/user', controller.user.index);
};

然后访问 127.0.0.1 => hi,user

第一个接口就完成了