美文网首页
koa router抽象实现业务代码解耦

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

作者: 晴窗细语 | 来源:发表于2020-09-08 17:29 被阅读0次

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

    原代码结构

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

    • app.js中读取加载router文件夹下所有router

    • index.js 中导出所有router

    • test.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);
        // 其他路由处理
        ……
    }
    

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

    相关文章

      网友评论

          本文标题:koa router抽象实现业务代码解耦

          本文链接:https://www.haomeiwen.com/subject/ulljektx.html