NodeJS / Express: что такое «app.use»?

вдокументы для NodeJSexpress moduleкод примера имеетapp.use(...).

Чтоuse функция и где она определяется?

 Afrig Aminuddin02 сент. 2018 г., 09:10
Возможный дубликат выше ссылается друг на друга
 Mina09 нояб. 2017 г., 11:40
На этот тип вопросов можно ответить, прочитав документацию.
 Alexander Bird04 июл. 2012 г., 04:30
возможный дубликат:stackoverflow.com/questions/7337572/…
 KansaiRobot27 апр. 2018 г., 06:43
документация немного загадочная для начинающего

Ответы на вопрос(15)

прочитайте больше) лайкbody_parser,CORS Промежуточное программное обеспечение может вносить изменения вrequest а такжеresponse объекты. Он также может выполнить кусок кода.

 Alexander Bird05 дек. 2018 г., 20:37
Спасибо за ответ, но я верю, что вся эта информация уже отражена в других ответах.

основного приложения. При подключении промежуточного программного обеспечения к основному стеку приложений, порядок вложения имеет значение; если вы подключите промежуточное программное обеспечение A до промежуточного программного обеспечения B, промежуточное программное обеспечение A всегда будет выполняться первым. Вы можете указать путь, к которому применимо конкретное промежуточное программное обеспечение. В приведенном ниже примере & # x201C; привет мир & # x201D; всегда регистрируется перед & # x201C; счастливыми праздниками. & # x201D;

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( function(req, res, next) {
  // your code 
  next();
})

Содержит три параметраreq, res, next
Вы также можете использовать его для аутентификации и проверки входных параметров, чтобы сохранить ваши     контроллер чистый.

next() используется для перехода к следующему промежуточному программному обеспечению или маршруту.
Вы можете отправить ответ из промежуточного программного обеспечения

app.use работает какmiddleware синтаксис

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);
Решение Вопроса

middleware stack которые можно настроить вapp.configure()(this is now deprecated in version 4.x).

Для настройки промежуточного программного обеспечения вы можете вызватьapp.use(<specific_middleware_layer_here>) для каждого промежуточного слоя, который вы хотите добавить (он может быть общим для всех путей или запускаться только на определенных путях, которые обрабатывает ваш сервер), и он добавится к вашемуэкспресс стек промежуточного программного обеспечения. Слои промежуточного программного обеспечения могут быть добавлены один за другим в несколько вызововuseили даже все сразу в серии с одним вызовом. Увидетьuse documentation Больше подробностей.

Чтобы дать пример концептуального понимания промежуточного программного обеспечения Express, вот как выглядит стек промежуточного программного обеспечения моего приложения (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 поле этого объекта слоя промежуточного программного обеспечения в распечатке стека выше.

Each layer is essentially adding a function that specifically handles something to your flow through the middleware.

Например. добавляяbodyParser, you're ensuring your server handles incoming requests through the express middleware, Так,now parsing the body of incoming requests is part of the procedure that your middleware takes when handling incoming requests - все потому что ты звонилapp.use(bodyParser).

 22 окт. 2013 г., 02:11
Так является ли применение app.use () зависимостью в действии?
 21 нояб. 2013 г., 19:25
Когда вызывается функция, отправленная в app.use? После создания экспресс-сервера или для каждого запроса?
 09 дек. 2015 г., 10:08
Проекты, созданные экспресс-использованиемapp.use загружать маршруты. Я не рассматриваю свое промежуточное ПО для маршрутов, так что это еще один приемлемый вариант использования?
 25 июн. 2013 г., 23:52
благодарю вас. было бы так сложно экспресс-людям объяснить это в своих документах API?
 10 окт. 2013 г., 21:10
Таким образом, вы говорите, что при получении запроса данные передаются через эти синтаксические анализаторы перед тем, как перейти к реальному сервису. Так, например: Valid Request-> Authentication-> ProcessesRequest-> ServResponseUSE будет контролировать эти шаги в определенном порядке, а не выполнять их параллельно?

app.use эта функция требует промежуточного программного обеспечения. Например:

        console.log('Request Type:', req.method);
        next();
     });

В этом примере показана функция промежуточного программного обеспечения, установленная в/user/:id дорожка. Эта функция выполняется для любого типа HTTP-запроса в/user/:id дорожка.

Это похоже на веб-сервер REST, просто используйте разные/xx представлять разные действия.

 Alexander Bird29 окт. 2018 г., 02:50
спасибо за ответ, но, поскольку кто-то другой уже сказал всю эту информацию, я не одобряю эту. Я не думаю, что мне нужно каждое объяснение того, что выражаютuse сможет сделать; Мне просто нужно было знать, что это такое (и любые контекстные знания, чтобы знать, как лучше исследовать себя).

импортировать экспресс из & quot; экспресс & quot; и используйте app = express (); тогда приложение, имеющее всю функциональность экспресс

если мы используем app.use ()

с любым модулем / функцией промежуточного программного обеспечения для использования во всем экспресс-проекте

мпляром объекта app с помощью функций app.use () и app.METHOD (), где METHOD - это метод HTTP запроса, который обрабатывает функция промежуточного программного обеспечения (например, GET, PUT или POST) в нижнем регистре.

ммного обеспечения или монтирования по указанному пути, функция промежуточного программного обеспечения выполняется, когда совпадает базовый путь.

For example: если вы используете app.use () в indexRouter.js, вот так:

//indexRouter.js

var adsRouter = require('./adsRouter.js');

module.exports = function(app) {
    app.use('/ads', adsRouter);
}

В приведенном выше коде app.use () смонтируйте путь к & apos; / ads & apos; на adsRouter.js.

Now in adsRouter.js

// adsRouter.js

var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;

in adsRouter.js, the path will be like this for ads- '/ads/show', and then it will work according to controllerIndex.ads.showAd().

app.use([path],callback,[callback]) : мы можем добавить обратный вызов на то же самое.

app.use('/test', function(req, res, next) {

  // write your callback code here.

    });
 27 янв. 2019 г., 01:59
Я "использую" карту " вместо "mount", легче понять.

Request event trigered on node http server instance. express does some of its inner manipulation with req object. This is when express starts doing things you specified with app.use

что очень просто.

И только тогда Express сделает все остальное, как маршрутизация.

app.use() выступает в качестве промежуточного программного обеспечения в экспресс-приложениях. В отличие отapp.get() а такжеapp.post() или так, вы можете использоватьapp.use() без указания URL-адреса запроса. В этом случае он выполняется каждый раз, независимо от того, по какому URL был достигнут доступ.

ого обеспечения, которое служит для «склейки». так app.use - это метод для настройки промежуточного программного обеспечения, например: для анализа и обработки тела запроса:  app.use (bodyParser.urlencoded ({extended: true}));  app.use (bodyParser.json ()); Есть много промежуточного программного обеспечения, которое вы можете использовать в вашем экспресс-приложении просто прочитайте документацию: http://expressjs.com/en/guide/using-middleware.html

use метод настройки промежуточного программного обеспечения, используемого маршрутами объекта Express HTTP-сервера Метод определяется как частьсоединять этот Экспресс основан на

Обновить Начиная с версии 4.x, экспресс больше не зависит отсоединять.

Функции промежуточного программного обеспечения, которые ранее были включены в Express, теперь находятся в отдельных модулях; увидетьсписок функций промежуточного программного обеспечения.

 06 мар. 2014 г., 15:01
Будет ли это эффективно, если промежуточное программное обеспечение Node создает объекты? Будет ли это означать, что при каждом запросе это промежуточное ПО создает новые объекты? Старые объекты выбрасываются? Напримерapp.use(function(){ var object = new SomeConstructor; next(); })
 Alexander Bird04 июл. 2012 г., 04:47
И онлайн документы здесь:senchalabs.org/connect/proto.html#app.use
 Alexander Bird04 июл. 2012 г., 04:42
 16 дек. 2015 г., 03:45
@CMCDragonkai Можно создавать экземпляры объектов при каждом запросе. Они будут собирать мусор, если вы не сохраняете ссылки на объекты вне области действия вашего обработчика запросов.
 17 дек. 2015 г., 05:31
@AlexanderBird спасибо за ссылки (1-й сейчас не работает). Для записи, только начало документа во 2-й ссылке говорит: «Использовать данный дескриптор промежуточного программного обеспечения для данного маршрута, по умолчанию /. Этот «маршрут» является точкой монтирования для промежуточного программного обеспечения, когда заданное значение, отличное от / промежуточного программного обеспечения, действует только тогда, когда этот сегмент присутствует в имени пути запроса. Например, если мы смонтируем функцию в / admin, она будет вызываться в / admin и / admin / settings, но не будет вызываться для /, или / posts & quot ;. Просто :)

app.use(middleware) вызывается раз, когда запрос отправляется на сервер.

get, post, ...] так что в основном он используется для установки Middelware. или может использоваться, когда маршруты и функции разделены

пример:

app.use("/test",functionName)

и functionName находится в другом файле

 Alexander Bird29 нояб. 2018 г., 21:21
Спасибо за ответ, но я верю, что вся эта информация уже отражена в других ответах.

Ваш ответ на вопрос