A popular estrutura node.js, express, tem um recurso útil que não é anunciado e pode ser extremamente útil.
Suponha que você tenha uma página que deseja expirar após um determinado período de tempo e diga que ela expirou. Sem esse recurso mágico, você pode fazer algo assim:
app.get('/will-expire',
showPage,
showExpiredPage
);
var hits = 0, maxhits = 10;
function showPage(req, res, next) {
// this is mixing in logic that doesn't
// belong here and isn't reusable
++hits;
if (hits > maxhits) return next();
res.end('not expired!');
}
function showExpiredPage(req, res, next) {
res.end('page is expired :(');
}
Podemos tornar esse código mais limpo, reutilizável e mais modular chamando next
com a string route
. Isso diz ao expresso para parar de executar os retornos de chamada para a rota correspondida e tentar fazer a correspondência com outra rota. Como isso:
app.get('/will-expire',
checkExpired,
showPage
);
app.get('/will-expire',
showExpiredPage
);
var hits = 0, maxhits = 10;
function checkExpired(req, res, next) {
// next('route') will go to the next matched route
// this is the magic we use to clean up our code
++hits;
if (hits > maxhits) return next('route');
next();
}
// showPage now is cleaner
function showPage(req, res, next) {
res.end('not expired!');
}
function showExpiredPage(req, res, next) {
res.end('page is expired :(');
}