tutorial proyecto node how crear node.js express

node.js - proyecto - NodeJS/Express: ¿qué es “app.use”?



node js express tutorial (11)

En los documentos para el módulo NodeJS express , el código de ejemplo tiene app.use(...) .

¿Qué es la función de use y dónde se define?


Cada app.use (middleware) se llama cada vez que se envía una solicitud al servidor.


El objeto de la aplicación se crea una instancia en la creación del servidor Express. Tiene una pila de middleware que se puede personalizar en app.configure() (ahora está en desuso en la versión 4.x) .

Para configurar su middleware, puede invocar app.use(<specific_middleware_layer_here>) para cada capa de middleware que desee agregar (puede ser genérico para todas las rutas o activado solo en rutas específicas que su servidor maneja), y se agregará a su pila de middleware Express . Las capas de middleware se pueden agregar una a una en múltiples invocaciones de use , o incluso todas a la vez en serie con una invocación. Consulte la app.use(<specific_middleware_layer_here>) para más detalles.

Para dar un ejemplo de comprensión conceptual de Middleware Express, aquí está cómo se ve mi pila de middleware de aplicación (app.stack) cuando se registra el objeto de mi aplicación en la consola como JSON:

stack: [ { route: '''', handle: [Function] }, { route: '''', handle: [Function: static] }, { route: '''', handle: [Function: bodyParser] }, { route: '''', handle: [Function: cookieParser] }, { route: '''', handle: [Function: session] }, { route: '''', handle: [Function: methodOverride] }, { route: '''', handle: [Function] }, { route: '''', handle: [Function] } ]

Como podría deducir, llamé a app.use(express.bodyParser()) , app.use(express.cookieParser()) , etc., que agregó estas "capas" de middleware express a la pila de middleware. Observe que las rutas están en blanco, lo que significa que cuando agregué esas capas de middleware especifiqué que se activan en cualquier ruta. Si agregué una capa de middleware personalizada que solo se activó en la ruta /user/:id , se reflejaría como una cadena en el campo de route de ese objeto de capa de middleware en la copia impresa de la pila anterior.

Esencialmente, cada capa agrega una función que maneja específicamente algo a su flujo a través del middleware.

Por ejemplo, al agregar bodyParser , se asegura de que su servidor maneje las solicitudes entrantes a través del middleware expreso . Por lo tanto, ahora analizar el cuerpo de las solicitudes entrantes es parte del procedimiento que lleva a cabo su middleware al manejar las solicitudes entrantes , todo porque llamó app.use(bodyParser) .


En express si importamos express desde "express" y usamos app = express (); entonces la aplicación tiene toda la funcionalidad de Express

si usamos app.use ()

con cualquier función de módulo / middleware para usar en todo proyecto express


Enlace el middleware de nivel de aplicación a una instancia del objeto de aplicación mediante el uso de las funciones app.use () y app.METHOD (), donde METHOD es el método HTTP de la solicitud que maneja la función de middleware (como GET, PUT o POST) en minúsculas.


Middleware es un término general para software que sirve para "pegar entre sí", por lo que app.use es un método para configurar el middleware, por ejemplo: para analizar y manejar el cuerpo de la solicitud: app.use (bodyParser.urlencoded ({extended: true })); app.use (bodyParser.json ()); hay muchos middlewares que puedes usar en tu aplicación Express, solo lee el documento: http://expressjs.com/en/guide/using-middleware.html


app.use () funciona así:

  1. Solicitud de evento activado en la instancia del servidor http del nodo.
  2. Express hace parte de su manipulación interna con objeto req.
  3. Esto es cuando Express comienza a hacer cosas que especificaste con app.use

que muy simple.

Y solo entonces Express hará el resto de las cosas como enrutamiento.


app.use () se utiliza para montar la función de middleware o para montar en una ruta específica, la función de middleware se ejecuta cuando la ruta base coincide.

Por ejemplo: si está utilizando app.use () en indexRouter.js, así:

//indexRouter.js var adsRouter = require(''./adsRouter.js''); module.exports = function(app) { app.use(''/ads'', adsRouter); }

En el código anterior app.use (), monte la ruta en ''/ ads'' a adsRouter.js.

Ahora en adsRouter.js

// adsRouter.js var router = require(''express'').Router(); var controllerIndex = require(''../controller/index''); router.post(''/show'', controllerIndex.ads.showAd); module.exports = router;

en adsRouter.js, la ruta será así para ads- ''/ ads / show'', y luego funcionará de acuerdo con controllerIndex.ads.showAd ().

app.use ([ruta], devolución de llamada, [devolución de llamada]): podemos agregar una devolución de llamada en la misma.

app.use(''/test'', function(req, res, next) { // write your callback code here. });


app.use aplica el middleware especificado a la pila de middleware de la aplicación principal. Al adjuntar middleware a la pila de aplicaciones principal, el orden de los archivos adjuntos es importante; si conecta el middleware A antes que el middleware B, el middleware A siempre se ejecutará primero. Puede especificar una ruta para la cual es aplicable un middleware particular. En el siguiente ejemplo, "hola mundo" siempre se registrará antes de "felices fiestas".

const express = require(''express'') const app = express() app.use(function(req, res, next) { console.log(''hello world'') next() }) app.use(function(req, res, next) { console.log(''happy holidays'') next() })


use es un método para configurar el middleware utilizado por las rutas del objeto del servidor HTTP Express. El método se define como parte de Connect que se basa Express.


app.use es una función que requiere middleware. Por ejemplo:

app.use(''/user/:id'', function (req, res, next) { console.log(''Request Type:'', req.method); next(); });

Este ejemplo muestra la función de middleware instalada en la ruta /user/:id . Esta función se ejecuta para cualquier tipo de solicitud HTTP en la ruta /user/:id .

Es similar al servidor web REST, solo use diferentes /xx para representar diferentes acciones.


app.use () actúa como un middleware en aplicaciones Express. A diferencia de app.get () y app.post () o algo así, en realidad puedes usar app.use () sin especificar la URL de solicitud. En tal caso, lo que hace es que se ejecuta cada vez que no importa en qué URL se ha afectado.