Diferença entre app.use () e router.uso () em Expresso
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.
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
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());
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.