在Express中,app.router到底做了什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Express中,app.router到底做了什么?相关的知识,希望对你有一定的参考价值。

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

...

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

我没有找到关于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是connect middleware router的增强版本。正如hector所说,这是Express处理在app.getapp.post等注册的请求处理程序。

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

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源here中检索路由器。

请注意Express 4 doesn't need app.router

另一答案

此方法已被弃用

为什么我们使用路由器..因为我们需要将我们的子应用程序连接到我们的主应用程序。

以上是关于在Express中,app.router到底做了什么?的主要内容,如果未能解决你的问题,请参考以下文章

通过浏览器访问一个网站的背后到底经历了什

Express.js req.body 未定义

express cookie 返回未定义

Express 没有处理函数的错误 [关闭]

路由后的 Node Express 4 中间件

第二十五天