In Express 3.x, app.router is an enhanced version of the connect middleware router. As hector said, this is where Express handles the request handlers registered with app.get
, app.post
, etc.
If you do not call app.use(app.router)
explicitly then express will call it implicitly the first time you use app.get(...)
, app.post(...)
, etc. However, you may want to .use
it explicitly, because then you choose the order of all your middleware.
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')));
See how the router is retrieved in the Express 3 source here.
Note that Express 4 doesn't need app.router.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…