Я просто читал документацию по экспресс и нашел эти два термина, app.use();
иrouter.use();
Я знаю, что app.use();
он используется в узле для монтирования промежуточного программного обеспечения по пути, и мы часто используем его в большинстве узловых приложений. но что router.use();
они оба одинаковы? если нет, в чем разница?
Я читал про роутер здесь . Я также нашел похожие вопросы на SO В чем разница между "express.Router" и маршрутизацией с использованием "app.get"? и Разница между app.all ('*') и app.use ('/') , но они не отвечают на мой вопрос. Спасибо.
router
. Мы можем обойтись только путемapp
. Это верно?router.use
но этот ответ отвечает наrouter.get
?router.use();
монтирует промежуточное ПО для маршрутов, обслуживаемых определенным маршрутизатором,app.use();
монтирует промежуточное ПО для всех маршрутов приложения (или тех, которые соответствуют маршрутам, указанным, если вы используетеapp.use('/ANYROUTESHERE', yourMiddleware());
).Примером использования может быть приложение с одним маршрутизатором со стандартными маршрутами и одним маршрутизатором, который обрабатывает маршруты api, для которых требуется действующий пользователь.
Затем вы должны установить промежуточное ПО для аутентификации для маршрутизатора api только с
router.use(yourAuthMiddleware());
.Если у вас есть приложение, для которого требуется действующий пользователь для всех маршрутов, смонтируйте промежуточное ПО для приложения с помощью
app.use(yourAuthMiddleware());
источник
use
его в другом маршрутизаторе? Нравитсяrouter1.use('/path', router2);
app.use (), используемый для монтирования функции или функций промежуточного программного обеспечения по указанному пути, функция промежуточного программного обеспечения выполняется, когда основа запрошенного пути совпадает с путем.
router.use () используется для функции или функций промежуточного программного обеспечения. По умолчанию путь монтирования - «/».
Но в app.use () вам нужно будет указать указанный путь следующим образом:
var adsRouter = require('./adsRouter.js'); app.use('/ads', adsRouter);
или
app.use('/ads', function(req, res, next) { // write your callback code here. });
Но при использовании router.use () вы можете использовать только промежуточное ПО, например:
router.use(function(req, res, next) { console.log('%s %s %s', req.method, req.url, req.path); next(); });
или
router.use('/test', function(req, res, next) { // write your callback code here. next(); });
или
//in router.js router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee); router.post('/admin', controllerIndex.ads.adListingAdmin);
В приведенном выше коде, когда конечной точкой является '/ admin', сначала он вызовет authUtil.verifySessionId и authUtil.verifyLisencee, затем он выполнит следующую строку с конечной точкой 'admin' и в соответствии с методом controllerIndex.ads.adListingAdmin.
источник
app.use
если вы хотите выполнять функцию для каждого запроса к приложению.