在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.get
, app.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 。