2016-05-25 76 views
0

我已经在几个教程中看到过这种格式,但是对于node.js和我让他们教会我的课程写路线为:node.js express - 处理路由为app.get('route',folder.file)

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

有那么一个文件夹“路线”与“example.js”

可以在里面一个文件:

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

相反,我用它喜欢看到很多有人可能会给我一点这样的解释处理路线,为什么它更好,在实施方面使用它有什么不同?

谢谢!

回答

2

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

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

在上述路由定义,该路线的逻辑被请求时针对/example由被调用函数中定义。当你在单个文件中定义了许多这样的路由时,很难跟踪和阅读。

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

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

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

我建议使用express-generator来创建一个新的快速应用程序,并通过应用程序及其目录的结构。这或多或少是Express应用程序应该如何布局的鼓励结构。它还将说明如何正确使用路由器中间件,您将很好地感受到路由如何被注入到主Express应用中。

+0

优秀的解释!我不知道路由器中间件。我会阅读你寄给我的链接。非常感谢你 ! –

1

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

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

它使您能够快速轻松地指出错误的来源,并且还允许其他开发人员全面了解您的项目。

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

1

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