node.js - proyecto - node js express tutorial
¿Diferencias entre express.Router y app.get? (7)
Digamos que su aplicación es poco compleja. Entonces, lo que hacemos primero es dividir la aplicación en múltiples módulos para que los cambios en un módulo no abarroten a los demás y pueda seguir trabajando en módulos individuales, pero al final del día necesita integrar todo en uno ya que están creando una sola aplicación. Es como si tuviéramos una aplicación principal y pocas aplicaciones secundarias cuyo padre es la aplicación principal. Entonces, cuando creamos la aplicación principal, creamos una usando
var express = require(''express'');
var parent = express();
Y para esta solicitud principal necesitamos traer las solicitudes secundarias. Pero dado que las aplicaciones secundarias no son aplicaciones totalmente diferentes (ya que se ejecutan en el mismo término context-java), express proporciona la forma de hacerlo mediante la función de Enrutador de Expresse y esto es lo que hacemos en cada archivo de módulo secundario y llamemos a uno de esos módulos secundarios como aboutme .
var express = require(''express'');
var router = express.Router();
/**
** do something here
**/
module.exports = router;
Por module.exports estamos haciendo que este módulo esté disponible para que otros lo consuman y, dado que hemos modularizado las cosas, necesitamos que los archivos del módulo estén disponibles para la aplicación principal mediante la función require del nodo al igual que cualquier otro módulo de terceros y el archivo principal se ve algo como esto.
var express = require(''express'')
var parent = express()
var child = require(./aboutme)
después de que este módulo secundario esté disponible para los padres, debemos decirle a la aplicación principal cuándo usar esta aplicación secundaria. Digamos que cuando un usuario encuentra el camino sobre mí, necesitamos la aplicación secundaria sobre mí para manejar la solicitud y lo hacemos utilizando el método de uso de Expresse.
parent.use(''/aboutme'', aboutme);
y de una sola vez el archivo padre se ve así
var express = require(''express'');
var parent = express();
var child = require(./aboutme);
/***
**do some stuff here
**/
parent.use(''/aboutme'',child);
Sobre todo, lo que el padre puede hacer es iniciar un servidor donde el niño no puede. Espero que esto aclare. Para obtener más información, siempre puede consultar el código fuente, que lleva algo de tiempo, pero le brinda mucha información. Gracias.
Estoy empezando con NodeJS y Express 4, y estoy un poco confundido.
He estado leyendo el sitio web de Express, pero no puedo ver
cuándo
usar un controlador de ruta o cuándo usar
express.Router
.
Como pude ver, si quiero mostrar una página o algo cuando el usuario golpea
/show
por ejemplo, debería usar:
var express = require(''express'')
var app = express()
app.get("/show", someFunction)
Al principio, pensé que esto era viejo (para Express 3). ¿Es correcto o esta también es la forma para Express 4?
Si esta es la forma de hacerlo en Express 4, ¿para qué se utiliza
express.Router
?
Leí casi el mismo ejemplo que el anterior pero usando
express.Router
:
var express = require(''express'');
var router = express.Router();
router.get("/show", someFunction)
Entonces, ¿cuál es la diferencia entre ambos ejemplos?
¿Cuál debo usar si solo quiero hacer un sitio web de prueba simple?
El uso de app.js para escribir rutas significa que son accesibles para todos los usuarios a medida que app.js se carga al iniciar la aplicación. Sin embargo, poner rutas en las mini aplicaciones express.router () protege y restringe su accesibilidad.
En una palabra,
express.Router
puede hacer más cosas cuando se compara con
app.get()
, como middleware, además, puede definir un objeto de enrutador más con
express.Router()
Express 4.0 viene con el nuevo enrutador. Como se menciona en el sitio:
La clase express.Router se puede utilizar para crear controladores de ruta montables modulares. Una instancia de enrutador es un sistema de enrutamiento y middleware completo; Por esta razón, a menudo se la denomina "mini-aplicación".
Hay un buen artículo en https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4 que describe las diferencias y lo que se puede hacer con los enrutadores.
Para resumir
Con los enrutadores puede modularizar su código más fácilmente. Puede usar enrutadores como:
- Rutas básicas: Inicio, Acerca de
- Enrutar Middleware para registrar solicitudes en la consola
- Ruta con parámetros
- Enrutar Middleware para parámetros para validar parámetros específicos
- Valida un parámetro pasado a una ruta determinada
Nota:
El objeto
app.router
, que se eliminó en Express 4, ha
app.router
en Express 5. En la nueva versión, es solo una referencia al enrutador Express base, a diferencia de Express 3, donde una aplicación tuvo que cargarse explícitamente eso.
express.Router
tiene muchas opciones:
-
Habilitar mayúsculas y minúsculas.
/show
ruta no es lo mismo/Show
, pero el valor predeterminado está marcado -
modo de enrutamiento estricto.
eso
/show/
no es lo mismo/show
y también está deshabilitado por defecto - Puede agregar middleware específico para rutas específicas.
app.js
var express = require(''express''),
dogs = require(''./routes/dogs''),
cats = require(''./routes/cats''),
birds = require(''./routes/birds'');
var app = express();
app.use(''/dogs'', dogs);
app.use(''/cats'', cats);
app.use(''/birds'', birds);
app.listen(3000);
perros.js
var express = require(''express'');
var router = express.Router();
router.get(''/'', function(req, res) {
res.send(''GET handler for /dogs route.'');
});
router.post(''/'', function(req, res) {
res.send(''POST handler for /dogs route.'');
});
module.exports = router;
Cuando se llama a
var app = express()
, se devuelve un objeto de aplicación.
Piense en esto como la
aplicación principal
.
Cuando se llama
var router = express.Router()
, se devuelve una
mini aplicación
ligeramente diferente.
La idea detrás de la
mini aplicación
es que cada ruta en su aplicación puede volverse bastante complicada, y se beneficiaría de mover todo ese código en un archivo separado.
El enrutador de cada archivo se convierte en una
mini aplicación
, que tiene una estructura muy similar a la
aplicación principal
.
En el ejemplo anterior, el código para la ruta / dogs se ha movido a su propio archivo para que no abarrote la aplicación principal . El código para / cats y / birds estaría estructurado de manera similar en sus propios archivos. Al separar este código en tres mini aplicaciones , puede trabajar en la lógica de cada una de forma aislada y no preocuparse por cómo afectará a las otras dos.
Si tiene un código (middleware) que pertenece a las tres rutas, puede ponerlo en la
aplicación principal
, antes de que
app.use(...)
.
Si tiene un código (middleware) que pertenece solo a una de esas rutas, puede colocarlo en el archivo solo para esa ruta.
app.route(''/book'')
.get(function (req, res) {
res.send(''Get a random book'')
})
.post(function (req, res) {
res.send(''Post a random book'')
})
Como en el ejemplo anterior, podemos agregar diferentes métodos de solicitud HTTP en una ruta.