В docs для модуля NodeJS express
код примера имеет app.use(...)
.
Что такое функция use
и где она определена?
В docs для модуля NodeJS express
код примера имеет app.use(...)
.
Что такое функция use
и где она определена?
Объект приложения создается при создании сервера Express. Он имеет middleware стек, который можно настроить в app.configure()
(теперь это устарело в версии 4.x),
Чтобы настроить ваше промежуточное программное обеспечение, вы можете вызывать app.use(<specific_middleware_layer_here>)
для каждого слоя промежуточного слоя, который вы хотите добавить (он может быть общим для всех путей, или запускается только по определенным адресам вашего сервера), и он добавит ваш Express уровень промежуточного программного обеспечения. Уровни промежуточного ПО могут добавляться один за другим в нескольких вызовах use
или даже всех последовательно последовательно с одним вызовом.
Подробнее см. use
documentation.
Чтобы дать пример концептуального понимания Express Middleware, вот что выглядит мой стек промежуточного программного обеспечения приложения (app.stack) при регистрации моего объекта приложения на консоли как JSON:
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
Как вы могли бы вывести, я позвонил app.use(express.bodyParser())
, app.use(express.cookieParser())
и т.д., который добавил эти слои промежуточного программного обеспечения в стек промежуточного программного обеспечения. Обратите внимание, что маршруты пустые, что означает, что когда я добавил эти уровни промежуточного слоя, я указал, что они запускаются на любом маршруте. Если бы я добавил настраиваемый уровень промежуточного слоя, который запускался только на пути /user/:id
, который будет отображаться как строка в поле route
этого объекта промежуточного слоя в вышеприведенной распечатке стека.
Каждый слой по существу добавляет функцию, которая специально обрабатывает ваш поток через промежуточное программное обеспечение.
например. добавив bodyParser
, вы обеспечиваете, чтобы ваш сервер обрабатывал входящие запросы с помощью промежуточного программного обеспечения. Итак, теперь синтаксический анализ тела входящих запросов является частью процедуры, которую выполняет ваше промежуточное программное обеспечение при обработке входящих запросов - все потому, что вы вызвали app.use(bodyParser)
.
use
- это метод для настройки промежуточного программного обеспечения, используемого маршрутами объекта HTTP-сервера Express. Метод определен как часть Connect, на котором основан Express.
Обновление Начиная с версии 4.x, Express больше не зависит от Connect.
Функции промежуточного программного обеспечения, которые ранее были включены в Express, теперь находятся в отдельных модулях; см. список функций промежуточного программного обеспечения.
Каждый app.use(промежуточное ПО) вызывается каждый раз, когда запрос отправляется на сервер.
app.use() используется для монтирования функции промежуточного программного обеспечения или монтирования по указанному пути, функция промежуточного программного обеспечения выполняется, когда соответствует базовый путь.
Например: если вы используете app.use() в indexRouter.js, например:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
В приведенном выше коде app.use() монтирует путь в '/ads' к adsRouter.js.
Теперь в adsRouter.js
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
в adsRouter.js, путь будет таким же, как и для ads-/ads/show ', а затем он будет работать в соответствии с controllerIndex.ads.showAd().
app.use([путь], обратный вызов, [обратный вызов]): мы можем добавить обратный вызов на то же самое.
app.use('/test', function(req, res, next) {
// write your callback code here.
});
app.use() действует как промежуточное программное обеспечение в экспресс-приложениях. В отличие от app.get() и app.post() или так, вы фактически можете использовать app.use() без указания URL-адреса запроса. В таком случае, что он делает, он запускается каждый раз независимо от того, какой URL был поражен.
app.use() работает так:
который очень прост.
И только тогда экспресс будет делать остальные вещи, такие как маршрутизация.
Middleware - это общий термин для программного обеспечения, которое служит для "склеивания", поэтому app.use - это метод настройки промежуточного программного обеспечения, например: для анализа и обработки тела запроса: app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); есть много посредников, которые вы можете использовать в своем экспресс-приложении просто прочитайте документ: http://expressjs.com/en/guide/using-middleware.html
В выражении, если мы Импорт экспресс из "экспресс" и используйте app = express(); то приложение, имеющее всю функциональность экспресс
если мы используем app.use()
с любой функцией модуля/промежуточного программного обеспечения для использования в целом экспресс-проекте
app.use применяет указанное промежуточное ПО к основному стеклу промежуточного программного обеспечения. При подключении промежуточного программного обеспечения к основному стеку приложения порядок вложений имеет значение; если вы присоедините промежуточное ПО A до промежуточного ПО B, промежуточное ПО A всегда будет выполняться первым. Вы можете указать путь, к которому применимо конкретное промежуточное программное обеспечение. В приведенном ниже примере "привет мир" будет всегда регистрироваться до "счастливых праздников".
const express = require('express')
const app = express()
app.use(function(req, res, next) {
console.log('hello world')
next()
})
app.use(function(req, res, next) {
console.log('happy holidays')
next()
})
app.use - это woks как промежуточное ПО для запроса приложений. синтаксис
app.use('pass request format',function which contain request response onject)
пример
app.use('/',funtion(req,res){
console.log(all request pass through it);
// here u can check your authentication and other activities.
})
также вы можете использовать его в случае маршрутизации вашего запроса.
app.use('/', roting_object);
app.use(function middleware1(req, res, next){
// middleware1 logic
}, function middleware1(req, res, next){
// middleware2 logic
}, ... middlewareN);
app.use - это способ регистрации промежуточного программного обеспечения или цепочки промежуточного программного обеспечения (или нескольких промежуточных программ) перед выполнением любой логики конечного маршрута или логики промежуточного маршрута в зависимости от порядка последовательности регистрации промежуточного программного обеспечения.
Промежуточное программное обеспечение: формирует цепочку функций/промежуточного программного обеспечения с 3 параметрами: req, res и next. next - это обратный вызов, который ссылается на следующую функцию промежуточного программного обеспечения в цепочке, а в случае последней функции промежуточного программного обеспечения цепочки next указывает на функцию первого промежуточного программного обеспечения следующей зарегистрированной промежуточной цепочки.
Привязать промежуточное ПО на уровне приложения к экземпляру объекта приложения с помощью функций app.use() и app.METHOD(), где METHOD - это метод HTTP запроса, который обрабатывает функция промежуточного программного обеспечения (например, GET, PUT или POST) в нижнем регистре.
app.use
- это функция, требующая промежуточного программного обеспечения. Например:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
В этом примере показана функция промежуточного программного обеспечения, установленная в пути /user/:id
. Эта функция выполняется для любого типа HTTP-запроса в пути /user/:id
.
Он похож на веб-сервер REST, просто используйте разные /xx
для представления разных действий.
Короче app.use() поддерживает все типы запросов [например: get, post,...], поэтому он в основном используется для настройки мультимедиа. или может использоваться, когда маршруты и функции разделены
пример:
app.use("/test",functionName)
и functionName находится в другом файле
Он позволяет использовать любое промежуточное ПО (более подробно), например body_parser
, CORS
и т.д. body_parser
программное обеспечение может вносить изменения в объекты request
и response
. Он также может выполнять часть кода.
Вы также можете создать свою собственную функцию промежуточного ПО, такую как
app.use( function(req, res, next) {
// your code
next();
})
Он содержит три параметра: req
, res
, next
Вы также можете использовать его для аутентификации и проверки входных параметров, чтобы поддерживать ваш контроллер в чистоте.
next()
используется для перехода к следующему промежуточному программному обеспечению или маршруту.
Вы можете отправить ответ из промежуточного программного обеспечения
app.use()
- это метод промежуточного программного обеспечения.
Промежуточный метод подобен перехватчику в Java, этот метод всегда выполняется для всех запросов.
Назначение и использование промежуточного программного обеспечения: -
Согласно Node и Express есть нечто, называемое функциями промежуточного программного обеспечения. Это означает, что функции должны иметь доступ к объектам запроса и ответа в приложении. Вы можете просмотреть более подробную информацию с примером, используя https://katupitiya.blogspot.com/
app.use - промежуточное ПО уровня приложения
Свяжите промежуточное программное обеспечение уровня приложения с экземпляром объекта app с помощью функций app.use() и app.METHOD(), где METHOD - это метод HTTP запроса, который обрабатывает функция промежуточного программного обеспечения (например, GET, PUT или POST) в нижнем регистре.
Вы можете использовать для проверки всех запросов, например, вы хотите проверить токен/токен доступа, вам нужно написать промежуточное программное обеспечение, используя app.use для проверки токена в запросе.
В этом примере показана функция промежуточного программного обеспечения без пути монтирования. Функция выполняется каждый раз, когда приложение получает запрос.
var app = express()
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
ссылка с https://expressjs.com/en/guide/using-middleware.html