在Express中,app.router究竟做了什么?

当我使用express二进制创build示例Express应用程序时,引导程序代码包含以下行:

... var app = express(); ... app.use(app.router); 

我没有find关于app.router的很多内容。 我认为这是处理路由(app.get(),app.post()等)规则的中间件,但是当我移除app.use(app.router)时,这些规则也会被执行。 线。

那么这个中间件的确切用法是什么?

这是来自Express 2.x指南http://expressjs.com/2x/guide.html

“请注意app.router的使用,它可以(可选地)用于装载应用程序路由,否则第一次调用app.get(),app.post()等将挂载路由。

我怀疑这也适用于Express 3.x。

在Express 3.x中,app.router是连接中间件路由器的增强版本。 正如赫克托所说,这是Express处理与app.getapp.post等注册的请求处理程序。

如果你不明确地调用app.use(app.router) express会在你第一次使用app.get(...)app.post(...)等时隐式地调用它。但是,你可能想要明确地.use它,因为那你select所有中间件的顺序。

 app.use(express.favicon()); app.use(express.bodyParser()); app.use(express.methodOverride()); // app.get, app.post, etc called before static folder app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); 

看看路由器是如何在Express 3源中检索的。

请注意, Express 4不需要app.router 。