我从NodeJS和Express 4开始,我有点困惑。我一直在阅读Express网站,但不知道什么时候使用路由处理程序或什么时候使用Express . router。

正如我所看到的,如果我想在用户点击/show时显示一个页面或其他东西,例如,我应该使用:

var express = require('express')    
var app = express()    
app.get("/show", someFunction)  

一开始,我认为这是旧的(快车3)。这是对的,还是这是快车4的方式?

如果这是特快4的做法,什么是特快。路由器用于?

我看到了几乎和上面相同的例子,但是使用了express。路由器:

var express = require('express');
var router = express.Router();
router.get("/show", someFunction)

那么,这两个例子有什么不同呢?

如果我只是想做一个简单的测试网站,我应该使用哪一个?


当前回答

使用app.js来编写路由意味着当应用程序启动时加载app.js时,所有用户都可以访问这些路由。但是,将路由放在express.router()小应用程序中可以保护和限制它们的可访问性。

其他回答

表达。路由器有很多选项:

启用区分大小写:/show route不与/show相同,默认情况下不启用此行为 严格路由模式:/show/路由到与/show不相同,此行为默认也被禁用 我们可以为特定的路由添加特定的中间件

app.route('/book')
  .get(function (req, res) {
    res.send('Get a random book')
  })
  .post(function (req, res) {
    res.send('Post a random book')
  })

在上面的例子中,我们可以在一个路由下添加不同的HTTP请求方法。

在一个复杂的应用程序中,应用程序是模块,例如文章和用户。路由器是模块中的控制器或动作,例如文章创建和列表。 例如url https://example.com/article/create解析文章模块并创建路由器。

此外,应用程序和路由器可以级在级。

在测试中有一个问题是这样问的:“express.Router()创建了一个行为类似于app对象的对象。”

正确答案是“True”。我知道我们都可以通过使用两者中的任何一个来创建路由器,但是否可以安全地说它们在所有情况下都不相同?如果我的理解是正确的,express()变量可以做更多的事情,比如启动服务器,而另一个变量不能。

Express 4.0附带了新的路由器。正如网站上提到的:

表达。路由器类可以用来创建模块化可挂载路由 处理程序。一个Router实例是一个完整的中间件和路由 系统;因此,它通常被称为“迷你应用程序”。

https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4上有一篇很好的文章,介绍了两者的区别以及路由器可以做什么。

总结

使用路由器,你可以更容易地模块化你的代码。你可以使用路由器:

基本路线:家,大约 路由中间件,将请求记录到控制台 带参数的路由 用于验证特定参数的参数路由中间件 验证传递给特定路由的参数

注意:

在Express 4中被删除的app.router对象在Express 5中重新出现。在新版本中,它只是一个对基本Express路由器的引用,不像在Express 3中,应用程序必须显式地加载它。