我在几个教程中看到过这种格式,但我对node.js和我所做的课程都很新,他们教我写路线:
app.get('/example', function(request, response){});
相反,我见过许多人使用它:
app.get('/example', routes.example);
然后使用“example.js”
中的文件“路由”文件夹有人可能会对这种处理路线的方式给我一点解释,为什么它更好,在实施方面使用它有什么区别?
谢谢!
答案 0 :(得分:2)
主要区别在于定义了路线的逻辑。通常鼓励后两种选择,因为它解耦了路由的责任并使代码更清晰易读。
app.get('/example', function(req, res) {});
在上面的路由定义中,该路由的逻辑是在对/example
发出请求时调用的函数内定义的。如果在单个文件中有许多这样的路由定义,则很难跟踪和阅读。
app.get('/example', routes.example);
此路线定义与之前的路线定义或多或少相同。主要优点是,当您在单个文件中有许多路径定义时,它的可读性更高。
对于包含多个路由文件的./routes
目录,这是因为Router Middleware。这样做的主要好处是,路由可以在单独的文件中定义,然后作为中间件注入主应用程序。
我建议使用express-generator
创建一个新的Express应用程序,并浏览应用程序及其目录的结构。这或多或少是鼓励结构应该如何布局Express应用程序。它还将说明如何正确使用路由器中间件,您将很好地了解如何将路由注入主Express应用程序。
答案 1 :(得分:1)
两者之间的唯一区别是强制分离关注点。
一些开发人员喜欢将与特定路由相关的所有代码保存在单独的控制器文件中,并在路由器文件中引用它。
它允许您快速轻松地指出错误的来源,并允许其他开发人员全面了解您的项目。
示例:如果我有路由/foo
我可以创建一个fooController
来处理该路由所需的所有操作。
答案 2 :(得分:1)
在第二种方式中,路由器中间件按惯例加载路径路径中定义的所有控制器。使用约定优于配置,代码将更干净,更简洁,但在功能,性能或其他方面,我认为没有区别。