/ / No Express, o que o app.router faz exatamente? - node.js, express

No Express, o que o app.router faz exatamente? - node.js, express

Quando eu crio uma amostra do aplicativo Express usando o binário expresso, o código de inicialização tem estas linhas:

...

var app = express();
...
app.use(app.router);

Eu não encontrei muito sobre app.router. Eu pensei que este é o middleware que lida com as regras de roteamento (app.get (), app.post () etc.), mas essas regras também são executadas quando eu removo o app.use (app.router); linha.

Então qual é o objetivo exato desse middleware?

Respostas:

15 para resposta № 1

Este é o guia do Express 2.x http://expressjs.com/2x/guide.html

"Observe o uso de app.router, que pode (opcionalmente) ser usado para montar as rotas de aplicativos, caso contrário, a primeira chamada para app.get (), app.post (), etc montará as rotas. "

Eu suspeito que isso se aplica ao Express 3.x também.


36 para resposta № 2

No Express 3.x, app.router é uma versão aprimorada do conecte o roteador do middleware. Como o Hector disse, este é o caso do Express, que manipula os manipuladores de pedidos registrados app.get, app.postetc.

Se você não ligar app.use(app.router) explicitamente, em seguida, expressa chama-lo implicitamente na primeira vez que você usa app.get(...), app.post(...), etc. No entanto, você pode querer .use explicitamente, porque então você escolhe a ordem de todo o seu 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")));

Veja como o roteador é recuperado na fonte Express 3 Aqui.

Observe que Express 4 não precisa app.router.


0 para resposta № 3

Este método foi descontinuado

Por que usamos o roteador? Porque precisamos conectar nosso sub app ao nosso aplicativo principal.