当我使用 express 二进制文件创建示例 Express 应用程序时,引导代码具有以下几行:
...
var app = express();
...
app.use(app.router);
我没有找到太多关于 app.router 的信息。我认为这是处理路由(app.get()、app.post() 等)规则的中间件,但是当我删除 app.use(app.router); 时这些规则也会被执行;线。
那么这个中间件的确切用途是什么?
在 Express 3.x 中,app.router 是连接中间件路由器的增强版本。正如赫克托所说,这是 Express 处理使用 , 等注册的请求处理程序的app.get
地方app.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 源中检索路由器。
这是来自 Express 2.x 指南http://expressjs.com/2x/guide.html
“注意 app.router 的使用,它可以(可选)用于挂载应用程序路由,否则第一次调用 app.get()、app.post() 等将挂载路由。”
我怀疑这也适用于 Express 3.x。
就我而言,我没有导出模块
module.exports = router;
此方法已弃用
为什么我们使用路由器..因为我们需要将我们的子应用程序连接到我们的主应用程序。