When I create a sample Express application using the express binary, the bootstrap code has these lines:
...
var app = express();
...
app.use(app.router);
I didn't find much about app.router. I thought that this is the middleware that handles the routing (app.get(), app.post() etc.) rules, but these rules also get executed when I remove the app.use(app.router); line.
So what is the exact purpuse of this middleware?
Best Answer
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 useapp.get(...)
,app.post(...)
, etc. However, you may want to.use
it explicitly, because then you choose the order of all your middleware.See how the router is retrieved in the Express 3 source here.
Note that Express 4 doesn't need app.router.