Antes de preguntar app.router
, creo que debería explicar al menos lo que creo que sucede cuando trabajo con middleware. Para usar middleware, la función a usar es app.use()
. Cuando se ejecuta el middleware, llamará al siguiente middleware mediante el uso next()
o lo hará para que no se llame más middleware. Eso significa que el orden en el que coloco mis llamadas de middleware es importante, porque algunos middleware dependen de otro middleware, y algunos middleware cerca del final podrían ni siquiera ser llamados.
Hoy estaba trabajando en mi aplicación y tenía mi servidor ejecutándose en segundo plano. Quería hacer algunos cambios, actualizar mi página y ver los cambios de inmediato. Específicamente, estaba haciendo cambios en mi diseño. No pude hacerlo funcionar, así que busqué la respuesta de Stack Overflow para encontrar esta pregunta . Dice asegurarse de que express.static()
esté debajo require('stylus')
. Pero cuando estaba mirando el código de ese OP, vi que tenía su app.router
llamada al final de sus llamadas de middleware, y traté de entender por qué.
Cuando hice mi aplicación Express.js (versión 3.0.0rc4), usé el comando express app --sessions --css stylus
y en mi archivo app.js el código vino configurado con mi app.router
anterior express.static()
y las require('stylus')
llamadas. Entonces parece que, si ya viene configurado de esa manera, entonces debería permanecer así.
Después de reorganizar mi código para poder ver los cambios de mi Stylus, se ve así:
app.configure(function(){
//app.set() calls
//app.use() calls
//...
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});
app.get('/', routes.index);
app.get('/test', function(req, res){
res.send('Test');
});
Así que decidí que el primer paso sería descubrir por qué es importante incluso tenerlo app.router
en mi código. Así que lo comenté, comencé mi aplicación y navegué a /
. Se muestra mi página de índice muy bien. Hmm, tal vez funcionó porque estaba exportando la ruta desde mi archivo de rutas (routes.index). Entonces, a continuación, navegué /test
y se mostró Prueba en la pantalla. Jaja, está bien, no tengo idea de lo que app.router
hace. Ya sea que esté incluido en mi código o no, mi enrutamiento está bien. Así que definitivamente me estoy perdiendo algo.
Ésta es mi pregunta:
¿Podría alguien explicarme qué app.router
hace, la importancia de esto y dónde debo colocarlo en mis llamadas de middleware? También sería bueno si recibiera una breve explicación sobre express.static()
. Por lo que puedo decir, express.static()
es un caché de mi información, y si la aplicación no puede encontrar la página solicitada, verificará el caché para ver si existe.