Является ли промежуточное программное обеспечение концепцией NodeJS или ExpressJS (или аналогичной)?

#node.js #express #middleware

#node.js #экспресс #промежуточное программное обеспечение

Вопрос:

Я продолжаю видеть вопросы, объясняющие концепцию промежуточного программного обеспечения в NodeJS, и мне всегда кажется, что они плохо сформулированы. Всегда ли люди подразумевают промежуточное программное обеспечение ExpressJS или существует практика использования этой концепции в чистых NodeJS?

Я проверил различные абстрактные объяснения здесь и здесь среди прочих, и я определенно понимаю, что концепция существует за пределами NodeJS и Express. Мне довольно любопытно, всегда ли промежуточное программное обеспечение NodeJS понимается как реализованное Express или другой библиотекой, или NodeJS сам по себе имеет встроенную концепцию.

Ответ №1:

Нет, промежуточное программное обеспечение не существует в чистом виде Node.js (по крайней мере, в том виде, в каком мы привыкли их видеть), эта концепция пришла к Node.js с Express.js . Но никто не запрещает вам писать свою собственную реализацию в Node.js , вам нужно начать со следующей функции, которая отвечает за все промежуточное программное обеспечение. Смысл этой функции в том, что она должна вызываться в самом конце и либо завершать процесс, либо передавать объекты req / res следующему промежуточному ПО. Реализацию можно увидеть здесь.

Комментарии:

1. было ли мое понимание также

Ответ №2:

Промежуточное программное обеспечение, упомянутое в ваших ссылках, не относится к той же категории, что и промежуточное программное обеспечение nodejs / express.

В express промежуточное программное обеспечение — это имя (на мой взгляд, напыщенное имя) для функций Javascript с этой подписью.

 function mWare (req, res, next) {
  /* do something useful with req and res */
  next()
}
 

Эти функции промежуточного программного обеспечения express вызываются express framework, как правило, перед той .get() или иной функцией, обрабатывающей каждый конкретный запрос. Эта концепция промежуточного программного обеспечения исходит из фреймворка express, а не из самого nodejs.

Другие веб-фреймворки, построенные на nodejs, имеют другие способы перехвата запросов. Например, hapi использует точки расширения сервера.

Промежуточное программное обеспечение, упомянутое в ваших ссылках, — это совсем не одно и то же. Оно состоит из более крупных компонентов. Системы очередей, балансировки нагрузки, доступа к базе данных, ведения журнала и кэширования — все это примеры такого рода промежуточного программного обеспечения. Вы могли бы доказать, что весь ваш сервер express / nodejs / Linux является промежуточным программным обеспечением по этому определению. Сервер с обратным прокси-сервером nginx, расположенный между вашей программой nodejs и сетью, определенно является промежуточным программным обеспечением такого рода.

Комментарии:

1. спасибо за ваш ответ. Я не уверен, хотя, действительно ли это отвечает на мой вопрос. Я процитирую это, чтобы это могло лучше прояснить, что я имею в виду: «Я определенно понимаю, что концепция существует за пределами NodeJS и Express. Мне довольно любопытно, всегда ли промежуточное программное обеспечение NodeJS понимается как реализованное Express или другой библиотекой, или NodeJS сам по себе имеет встроенную концепцию. »