javascript - query - express router get params
¿Cuál es la diferencia entre el middleware de nivel de enrutador y aplicación cuando se enruta en Express? (2)
¿Cuál es el propósito de app.use pasarlo a router.get en lugar de simplemente usar app.get?
Todo esto es solo diseño para modularidad. Permite que una aplicación se divida en varias piezas más pequeñas de acoplamiento débil y, como no todas tienen un conocimiento directo de la instancia de la app
compartida que las combina, se logra la modularidad.
Por ejemplo, podría crear un subsistema de cuenta de usuario completo que maneje el registro, el inicio de sesión, la contraseña olvidada, etc., y compartirlo entre varias aplicaciones diferentes "montándolas" a través de app.use(require("my-user-system"))
.
Ese es el único propósito detrás de esto. No hay diferencia funcional, técnica, o de rendimiento de lo contrario.
Y en general, ¿cuál es la diferencia entre app.VERB y router.VERB en términos de enrutamiento?
Ninguna diferencia. La aplicación tiene su propio enrutador principal / primario y app.VERB
es solo azúcar de conveniencia para el equivalente de app.router.VERB
.
En los documentos expresos , dice:
El middleware de nivel de aplicación está vinculado a una instancia de Express, usando app.use () y app.VERB ().
El middleware de nivel de enrutador funciona igual que el middleware de nivel de aplicación, excepto que están vinculados a una instancia de
express.Router()
. El sistema de middleware creado en el nivel de la aplicación en el ejemplo anterior, se puede replicar en el nivel del enrutador usando el siguiente código.
En la aplicación provista por el generador Express, veo en la aplicación principal.js, hay:
var routes = require(''./routes/index'');
app.use(''/'', routes);
Y en ./routes/index.js
, veo esto:
var express = require(''express'');
var router = express.Router();
/* GET home page. */
router.get(''/'', function(req, res, next) {
res.render(''index'', { title: ''Express'' });
});
module.exports = router;
¿Cuál es el propósito de app.use
pasarlo a router.get
lugar de simplemente usar app.get
? Y en general, ¿cuál es la diferencia entre app.VERB
y router.VERB
en términos de enrutamiento?
Un ejemplo ayudará aquí:
En los birds.js:
// birds.js
var express = require(''express'');
var router = express.Router();
// middleware that is specific to this router
router.use(function timeLog(req, res, next) {
console.log(''Time: '', Date.now());
next();
});
// define the home page route
router.get(''/'', function (req, res) {
res.send(''Birds home page'');
});
En la app.js:
// app.js
const express = require(''express'')
const app = express()
var birds = require(''./birds'');
app.use(''/birds'', birds);
app.listen(3000, () => console.log(''app listening on port 3000!/naccess http://localhost:3000/birds/''))
Ahora las solicitudes a http://localhost:3000/birds/ irán al archivo birds.js.
Este enfoque modular facilitará el mantenimiento de una base de código grande, a medida que la aplicación crezca.