当我使用Express二进制文件创建示例express应用程序时,引导程序代码包含以下行:
...
var app = express();
...
app.use(app.router);
我没有找到太多关于app.router的信息。我认为这是处理路由的中间件(app.get()、app.post()等)。规则,但是当我删除app.use(app.router);行时,这些规则也会被执行。
那么这个中间件的确切用途是什么呢?
发布于 2012-11-07 00:29:55
这来自Express2.x指南http://expressjs.com/2x/guide.html
“注意app.router的用法,它可以(可选地)用于挂载应用程序路由,否则第一次调用app.get()、app.post()等将挂载路由。”
我怀疑这也适用于Express 3.x。
发布于 2013-07-12 06:36:46
在Express3.x中,app.router是connect middleware router的增强版本。正如赫克托所说,这是Express处理注册到app.get
、app.post
等的请求处理程序的地方。
如果您没有显式调用app.use(app.router)
,那么express将在您第一次使用app.get(...)
、app.post(...)
等时隐式调用它。但是,您可能希望显式地调用它,因为这样您就可以选择所有中间件的顺序。
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')));
查看如何在Express3源here中检索路由器。
发布于 2020-07-15 01:56:30
在我的例子中,我没有导出模块
module.exports = router;
https://stackoverflow.com/questions/13254549
复制相似问题