NodeJS / Express: what is " app.usar"?
nos documentos para o módulo NodeJS express
, o código de exemplo tem app.use(...)
.
Qual é a função use
e onde está definida?
10 answers
O objecto da aplicação está instanciado na criação do servidor expresso. Tem um middleware pilha que pode ser personalizado em app.configure()
(isto está agora desactualizado na versão 4.x) .
A configuração de seu middleware, você pode invocar app.use(<specific_middleware_layer_here>)
para cada camada de middleware que você deseja adicionar (pode ser genérico para todos os caminhos, ou acionado apenas no caminho específico(s) de seu servidor de que trata), e adicione em seu Express middleware pilha. Camadas Middleware podem ser adicionadas uma a uma em várias invocações de use
, ou mesmo todas de uma vez em série com uma invocação.
Veja use
documentação para mais pormenores.
Para dar um exemplo de compreensão conceitual do Middleware expresso, aqui está o que minha pilha de middleware app (app.stack) parece que ao registar o objecto da minha aplicação na 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 podes deduzir, liguei-te.app.use(express.bodyParser())
, app.use(express.cookieParser())
, etc., que acrescentou estes middleware expresso "camadas" para a pilha de middleware. Observe que as rotas são em branco, o que significa que quando eu adicionei essas camadas middleware eu especificei que elas seriam ativadas em qualquer rota. Se eu adicionasse uma camada de middleware personalizada que só despoletasse no path /user/:id
, isso seria reflectido como um texto no campo route
desse objecto de camada de middleware na impressão da pilha acima.
cada camada é essencialmente adicionar uma função que lida especificamente com algo para o seu fluxo através do middleware.
Por exemplo, adicionandobodyParser
, está a garantir que o seu servidor lida com os pedidos recebidos através do middleware expresso. Então, Agora analisar o corpo dos pedidos recebidos faz parte do procedimento que o seu middleware usa ao lidar com os pedidos recebidos -- tudo porque ligou para app.use(bodyParser)
.
Cada aplicação .o use (middleware) é chamado sempre que um pedido é enviado para o servidor.
App.use () usado para montar a função middleware ou montar para um caminho especificado,a função middleware é executada quando o caminho de base corresponde.
Por exemplo: se você estiver usando app.use () in indexRouter.js, assim:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
Na aplicação de código acima.use () montar o caminho em '/ads' para adsRouter.js.
Agora em adsRouter.js
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
Em adsRouter.js, o caminho será como este para anúncios- '/ ads / show' , e então ele vai funcionar de acordo com controla o index.anuncio.showAd().
App.uso ([localização],callback, [callback]): podemos adicionar uma chamada no mesmo.
app.use('/test', function(req, res, next) {
// write your callback code here.
});
App.use () funciona assim:
- Request event trigered on node http server instance.
- expresso faz alguma da sua manipulação interior com objecto req.
- é quando o express começa a fazer as coisas que indicou com a aplicação.utilizar
App.use () atua como um middleware em aplicativos express. Ao contrário de app.get () and app.post () ou assim, você realmente pode usar app.use () sem especificar o URL do pedido. Em tal caso o que ele faz é, ele é executado cada vez que não importa qual URL foi atingido.
Em Expresso Se nós importar expresso de"express" e usar app = express(); em seguida, app Com todas as funcionalidades do express
Se usarmos a aplicação.use ()
Com qualquer função module/middleware a usar em todo o projecto express
App.o uso aplica o middleware indicado à pilha principal de middleware da aplicação. Ao anexar o middleware à pilha principal de aplicações, a ordem do anexo importa; se anexar o middleware A antes do middleware B, o middleware A irá sempre executar primeiro. Você pode especificar um caminho para o qual um middleware particular é aplicável. No exemplo abaixo, " hello world "será sempre registrado antes de" happy holidays."
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()
})
Ligar o middleware de nível de aplicação a uma instância do objecto do aplicativo, usando o aplicativo.use () e app.METHOD () functions, where METHOD is the HTTP method of the request that the middleware function handles (such as GET, PUT, or POST) in lowercase.