Właśnie czytałem dokumentację na ekspresie i znalazłem te dwa terminy app.use();
irouter.use();
Wiem, że app.use();
jest używany w węźle do montowania oprogramowania pośredniego na ścieżce i często używamy go w większości aplikacji węzłów. ale co to router.use();
jest, że oboje są tacy sami? jeśli nie, jaka jest różnica?
O routerze przeczytałem tutaj . Znalazłem również podobne pytania w SO. Jaka jest różnica między „express.Router” a routingiem przy użyciu „app.get”? i różnica między app.all ('*') a app.use ('/') , ale tak naprawdę nie odpowiadają na moje pytanie. Dzięki.
router
. Możemy to zrobić tylko przezapp
. Czy to jest poprawne?router.use
ale ta odpowiedź odpowiadarouter.get
?router.use();
montuje oprogramowanie pośredniczące dla tras obsługiwanych przez określony router,app.use();
montuje oprogramowanie pośredniczące dla wszystkich tras aplikacji (lub tych, które pasują do określonych tras, jeśli używaszapp.use('/ANYROUTESHERE', yourMiddleware());
).Przykładowym przypadkiem użycia może być aplikacja z jednym routerem ze standardowymi trasami i jednym routerem obsługującym trasy interfejsu API, które wymagają prawidłowego użytkownika.
Następnie montujesz oprogramowanie pośredniczące uwierzytelniania dla routera API tylko z
router.use(yourAuthMiddleware());
.Jeśli jednak masz aplikację, która wymaga prawidłowego użytkownika dla wszystkich tras, zainstaluj oprogramowanie pośredniczące dla aplikacji z rozszerzeniem
app.use(yourAuthMiddleware());
źródło
use
w innym routerze? Podobnie jakrouter1.use('/path', router2);
app.use () służy do montowania funkcji lub funkcji oprogramowania pośredniego w określonej ścieżce, funkcja oprogramowania pośredniego jest wykonywana, gdy podstawa żądanej ścieżki jest zgodna ze ścieżką.
router.use () jest używany do funkcji lub funkcji oprogramowania pośredniego. Domyślna ścieżka montowania to „/”.
Ale w app.use () będziesz musiał podać określoną ścieżkę w ten sposób:
var adsRouter = require('./adsRouter.js'); app.use('/ads', adsRouter);
lub
app.use('/ads', function(req, res, next) { // write your callback code here. });
Ale używając router.use () możesz dać tylko oprogramowanie pośredniczące, na przykład:
router.use(function(req, res, next) { console.log('%s %s %s', req.method, req.url, req.path); next(); });
lub
router.use('/test', function(req, res, next) { // write your callback code here. next(); });
lub
//in router.js router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee); router.post('/admin', controllerIndex.ads.adListingAdmin);
W powyższym kodzie, gdy punktem końcowym jest „/ admin”, najpierw wywoła authUtil.verifySessionId i authUtil.verifyLisencee, a następnie wykona kolejną linię z punktem końcowym „admin” i zgodnie z metodą controllerIndex.ads.adListingAdmin.
źródło
app.use
jeśli chcesz wykonać funkcję dla każdego żądania skierowanego do aplikacji.