Вопрос по node.js, express – NodeJS / Express: что такое «app.use»?

251

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

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

На этот тип вопросов можно ответить, прочитав документацию. Mina
Возможный дубликат выше ссылается друг на друга Afrig Aminuddin
возможный дубликат:stackoverflow.com/questions/7337572/… Alexander Bird
документация немного загадочная для начинающего KansaiRobot

Ваш Ответ

15   ответов
1

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

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

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

1

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);
14

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

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.

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

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

1

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

0

такую как

app.use( function(req, res, next) {
  // your code 
  next();
})

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

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

0

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

19

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

1

основного приложения. При подключении промежуточного программного обеспечения к основному стеку приложений, порядок вложения имеет значение; если вы подключите промежуточное программное обеспечение 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()
})
0

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

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

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

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

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

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

пример:

app.use("/test",functionName)

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

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

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

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

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

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

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

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

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 сделает все остальное, как маршрутизация.

289

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).

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

Похожие вопросы