【问题标题】:node.js express - handling routes as app.get('route', folder.file)node.js express - 将路由处理为 app.get('route', folder.file)
【发布时间】:2016-05-25 22:12:23
【问题描述】:

我在几个教程中看到过这种格式,但我是 node.js 的新手,在我制作的课程中,他们教我将路由编写为:

app.get('/example', function(request, response){});

相反,我看到很多人使用它:

app.get('/example', routes.example);

然后在“example.js”中有一个文件夹“routes”,其中包含一个文件

谁能给我一点解释这种处理路由的方式,为什么它更好,在实现方面使用它有什么区别?

谢谢!

【问题讨论】:

    标签: javascript node.js express routes


    【解决方案1】:

    主要区别在于定义路由逻辑的位置。通常鼓励使用这两种选择中的后者,因为它解耦了路由的职责并使代码更清晰易读。

    app.get('/example', function(req, res) {});

    在上面的路由定义中,该路由的逻辑是在函数内部定义的,当针对/example 发出请求时,该函数会被调用。当您在一个文件中定义了许多这样的路线时,就会变得难以理解和阅读。

    app.get('/example', routes.example);

    此路由定义在功能上与前一个或多或少相同。主要优点是当您在单个文件中有许多路由定义时,它的可读性要高得多。

    至于./routes目录里面有多个路由文件,这是因为Router Middleware。这样做的主要好处是,可以在单独的文件中定义路由,然后将其作为中间件注入到主应用程序中。

    我建议使用express-generator 创建一个新的 Express 应用程序,并检查应用程序的结构及其目录。对于 Express 应用程序的布局方式,这或多或少是值得鼓励的结构。它还将说明如何正确使用路由器中间件,并且您会很好地了解路由是如何注入主 Express 应用程序的。

    【讨论】:

    • 很好的解释!我不知道路由器中间件。我会阅读你发给我的链接。非常感谢!
    【解决方案2】:

    两者之间的唯一区别是强制分离关注点。

    一些开发人员喜欢将与特定路由相关的所有代码保存在单独的控制器文件中,并在您的路由器文件中引用它。

    它可以让您快速轻松地查明错误的根源,还可以让其他开发人员对您的项目有一个广泛的了解。

    示例:如果我有一个路由 /foo,我可以创建一个 fooController 来处理该路由所需的所有操作。

    【讨论】:

      【解决方案3】:

      在第二种方式中,Router 中间件按照约定加载路由路径中定义的所有控制器。使用约定优于配置,代码会更简洁,更简洁,但在功能、性能或其他方面我认为没有区别。

      【讨论】:

        猜你喜欢
        • 2018-03-26
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-07
        • 1970-01-01
        • 2020-05-14
        • 2019-09-02
        相关资源
        最近更新 更多