【问题标题】:Using import to "organize" routes folder for Express in NodeJs使用导入来“组织”NodeJs 中 Express 的路由文件夹
【发布时间】:2021-09-07 20:08:03
【问题描述】:

我最近开始在我的 NodeJS Rest API 中使用 ECMAScript (ES6),它使用 Express,我遇到了新关键字 import 的几个问题

以前,我会这样做“组织”我的路线文件夹:

我们称这个文件为 devices_id.js

export default (app) => {
    return app.get("/devices/:id", (req, res) => {
        res.send("OK");
    });
};

在我的主文件上我会这样做:

require("./routes")(app); // app is my Express instance

我不知道如何用 ES6 做到这一点,我试过 import("./routes") 但它不允许我传递 app 对象

提前致谢。

【问题讨论】:

    标签: javascript node.js express ecmascript-6


    【解决方案1】:

    您在此处缺少 feature 中的一个键 express.router。 您将让 app.js 导入并附加每个文件

    import route1 from './routes/route1'
    import route2 from './routes/route2'
    
    app.use('/route1', route1) // All routes in here starts with /route1
    app.use('/test', route2) // All routes in here starts with /test
    

    然后你就可以像这样设置每个路由器文件

    /routes/route1

    import express from 'express'
    
    const router = express.Router()
    
    // GET /route1/foo
    router.get('/foo', (req, res) => {
      res.send('OK')
    })
    
    export default router
    

    请注意,此代码未经测试


    编辑

    不幸的是,目前没有办法在 ES6 express 中动态导入路由。但是,我多年来一直在使用 this 库,效果很好。它会扫描 routes 文件夹中的所有文件夹和子文件夹,并将文件添加到您的 express 实例中。它还使用文件和文件夹的名称作为端点的名称。因此,如果有一个好的文件夹结构,它就很棒而且非常动态。

    【讨论】:

    • 嗨,这就是我不想要的,我不想导入每个文件然后手动使用它。我想要一种自动化的方式,我很可能在示例中遗漏了一些内容我相信它是 fs.readdir 之类的,对不起!
    • 我明白了。不幸的是,目前在 es6 express 中没有办法做到这一点。但是,我多年来一直使用library,效果很好。它会扫描 routes 文件夹中的所有文件夹和子文件夹,并将它们添加到您的 express 实例中。它还使用文件和文件夹的名称作为端点的名称。因此,如果有一个好的文件夹结构,那就太棒了。
    • 这解决了我的问题,感谢这个很棒的库!
    • 我将使用此评论更新我的答案,以确保它是您案例的完整答案。
    • 只要确保包含库链接;)
    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2020-04-28
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多