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