express.Router和app.get之间的区别?

我从NodeJS和Express 4开始,我有些困惑。我一直在阅读Express网站,但看不到何时使用路由处理程序或何时使用express.Router

如我所见,例如,如果我想在用户点击时显示页面或其他内容,/show则应使用:

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

一开始,我认为这很旧(对于Express 3)。是这样吗,还是Express 4也是如此?

如果这是在Express 4中实现的方式,那么它的express.Router用途是什么?

我读了几乎与上面相同的示例,但是使用了express.Router

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

那么,两个示例之间有什么区别?

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

2020/03/20 13:49:18

总之,与中间件express.Router相比,它可以做更多的事情app.get(),而且,您可以使用express.Router()

EvaTom2020/03/20 13:49:18

使用app.js编写路由意味着当在应用程序启动时加载app.js时,所有用户都可以访问它们。但是,将路由放入express.router()微型应用程序会保护并限制其可访问性。

蛋蛋猿2020/03/20 13:49:18

express.Router 有很多选择:

  • 启用区分大小写:/show路由与不相同/Show,默认情况下禁用此行为
  • 严格的路由模式:/show/路由到不相同/show,默认情况下也禁用此行为
  • 我们可以将特定的中间件添加到特定的路由
凯西里2020/03/20 13:49:18

Express 4.0 comes with the new Router. As mentioned on the site:

The express.Router class can be used to create modular mountable route handlers. A Router instance is a complete middleware and routing system; for this reason it is often referred to as a “mini-app”.

https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4中有一篇很好的文章,描述了差异以及如何使用路由器。

总结一下

使用路由器,您可以更轻松地将代码模块化。您可以将路由器用作:

  1. 基本路线:首页,关于
  2. 路由中间件以将请求记录到控制台
  3. 带参数的路线
  4. 路由中间件获取参数以验证特定参数
  5. 验证传递给特定路由的参数

注意:

app.router在Express 4中删除对象在Express 5中又卷土重来。在新版本中,它只是对基本Express路由器的引用,与Express 3不同,在Express 3中,应用程序必须显式加载它。