【问题标题】:How to optimize router in nodejs koa?如何优化nodejs koa中的路由器?
【发布时间】:2022-01-07 03:21:46
【问题描述】:

我使用koa创建了一个nodejs应用,并尝试优化。

app.js

'use strict';
const Koa = require("koa");
const app = new Koa();
const Router = require("koa-router");
const router = new Router();

const stuff = require("./router/stuff.js");
router.use("/stuff", stuff.routes());
//more routers like above
const home = require("./router/home.js");
router.use(home.routes());

app.use(router.routes(), router.allowedMethods());
app.listen(port);

文件夹router中有一些路由器文件,如stuff.jshome.jsclient.js

stuff.js

'use strict';
const router = require("koa-router")();
router
    .get("/", async (ctx) => {
        await ctx.render("stuff", {

        });
    })
module.exports = router;

home.js

'use strict';
const router = require("koa-router")();
router
    .get("/", async (ctx) => {
        await ctx.render("home", {

        });
    })
module.exports = router;

client.js

'use strict';
const router = require("koa-router")();
router
    .get("/", async (ctx) => {
        await ctx.render("client", {

        });
    })
module.exports = router;

我觉得我写的方式还是很业余的,如何优化呢?谢谢。

【问题讨论】:

    标签: javascript node.js koa koa-router


    【解决方案1】:

    经过研究,我正在使用以下解决方案

    app.js

    'use strict';
    const Koa = require("koa");
    const app = new Koa();
    const router = require("./router");
    router(app);
    app.listen(port);
    

    在文件夹router,添加index.js,代码如下

    'use strict';
    const fs = require('fs');
    module.exports = (app) => {
      fs.readdirSync(__dirname).forEach(file => {
        if (file === 'index.js') { return; }
        const route = require(`./${file}`);
        app.use(route.routes()).use(route.allowedMethods());
      });
    }
    

    其他路由器文件相同,例如home.js

    'use strict';
    const router = require("koa-router")();
    router
        .get("/", async (ctx) => {
            await ctx.render("home", {
    
            });
        })
    module.exports = router;
    

    【讨论】:

      猜你喜欢
      • 2021-04-02
      • 1970-01-01
      • 2021-06-29
      • 2019-03-26
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多