Diferença entre app.use () e router.uso () em Expresso

Estava a ler a documentação no express e encontrei estes dois termos.router.use();

Eu sei que app.use(); é usado no node para montar um middleware {[[9]} num caminho, e nós usamo-lo frequentemente na maioria das aplicações de nós. mas o que são ambos iguais? se não, Qual é a diferença ?

li sobre o router aqui. Também encontrei perguntas semelhantes sobre SO Qual é a diferença entre "express".Router "and routing using" app.apanhar? e diferença entre a aplicação.all ('* ' ) e app.utilização('/'), mas não respondem realmente à minha pergunta. Obrigado.

Author: Community, 2014-12-01

3 answers

router.get é apenas para definir sub-vias. Considere este exemplo:

var router = express.Router();

app.use('/first', router); // Mount the router as middleware at path /first

router.get('/sud', smaller);

router.get('/user', bigger);
  • se abrir / first / sud , Então a função smaller será chamada.
  • Se abrir / first / user , Então a função bigger será chamada.

Em resumo, app.use('/first', router) monta o middleware no path / first , depois router.get Ajusta o subconjunto em conformidade.


Mas se usarmos o seguinte:

app.use('/first', fun);

app.get('/sud', bigger);

app.get('/user', smaller);
  • se abrir / first in your browser, fun will get called,
  • para / sud, bigger vão ser chamados
  • para / utilizador, smaller vão ser chamados

Mas lembre-se de /first/sud, nenhuma função será chamada.

Esta ligação também pode ajudar: http://expressjs.com/api.html#router

 76
Author: Sudhanshu Gaur, 2018-05-02 13:30:57

router.use(); monta o middleware para as rotas servidas pelo router específico, app.use(); monta o middleware para todas as rotas do app (ou as que correspondem às rotas indicadas se usar app.use('/ANYROUTESHERE', yourMiddleware());).

Exemplo caso de uso pode ser um aplicativo com um roteador com rotas padrão e um roteador que lida com rotas api, que precisam de um usuário válido.

Você iria então montar o middleware de autenticação para o router da api apenas com router.use(yourAuthMiddleware());.

Se tivesses uma aplicação que requer um utilizador válido para todas as rotas, montar o middleware para a aplicação com app.use(yourAuthMiddleware());

 54
Author: mvuajua, 2016-04-23 23:50:45

App.use () usado para montar a função ou funções middleware na localização indicada,a função middleware é executada quando a base da localização pedida corresponde à localização.

Router.use () é usado para a função ou funções middleware, o padrão montar caminho para "/".

Mas em aplicacao.use () você terá que dar um caminho especificado como esse:

 var adsRouter = require('./adsRouter.js');
    app.use('/ads', adsRouter);

Ou

app.use('/ads', function(req, res, next) {

  // write your callback code here.

    });

Mas enquanto usa router.use () você só pode dar middleware, como este:

router.use(function(req, res, next) {
  console.log('%s %s %s', req.method, req.url, req.path);
  next();
});

Ou

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

Ou

//in router.js

router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee);
router.post('/admin', controllerIndex.ads.adListingAdmin);

No código acima, quando o ponto final é '/ admin ' então Primeiro ele vai chamar o authUtil.verificsessionid and authUtil.verificationeem seguida, ele vai executar a próxima linha com "admin" ponto final e de acordo com controllerIndex.anuncio.método adListingAdmin.

 0
Author: Shubham Verma, 2017-03-04 18:32:04