koa router抽象实现业务代码解耦

2020-09-08  本文已影响0人  晴窗细语

之前做内部项目,后台用koa搭建,router处理那里是由各个细分路由组合起来,在每个路由的回调里处理业务代码,将数据返回给前台。这几天看koa的书,里面讲到在koa里运用MVC将各个模块抽出来,实现代码解耦,记录一下。

原代码结构

|-- src
     |-- router/
        |--index.js
        |--test.js
     |-- app.js

test.js结构大致为:

const router = require('koa-router')();

router.get('/index', async(ctx, next) => {
//处理业务代码
});

router.post('/path', async(ctx, next) => {
//处理业务代码
});

module.exports = router

koa中实现MVC

思路就是将router中处理业务代码的地方抽出来放在单独的文件中,实现业务解耦。

代码结构:
|-- src
    |-- controller/
        |-- home.js
     |-- router/
        |--index.js
     |-- app.js

其中,新增controller文件夹用,home.js用于处理业务逻辑,多个router js可对应多个controller js,这里只记录一个。

home.js大致结构为:

module.exports = {
    index: async (ctx, next) => {
        ctx.response.body = '....' //业务处理代码
    },
   // 从router js中抽象出来的各种业务代码
    path: async (ctx, next) => {

    },
  ……
}

router.js可相应作出修改:

const router = require('koa-router')();
cosnt HomeController = require('../controller/home');

module.exports = (app) => {
    router.get('/index', HomeController.home);
    router.post('/path', HomeController.path);
    // 其他路由处理
    ……
}

相应代码可相应作出修改。

上一篇下一篇

猜你喜欢

热点阅读