Несмотря на то, что я достаточно хорошо знаю JavaScript, я не совсем понимаю, что именно делают эти три проекта в экосистеме Node.js. Это что-то вроде Rails 'Rack? Может кто-нибудь объяснить, пожалуйста?
node.js
middleware
tillda
источник
источник
Ответы:
[ Обновление: Начиная с версии 4.0, Express больше не использует Connect. Однако Express по-прежнему совместим с промежуточным программным обеспечением, написанным для Connect. Мой оригинальный ответ ниже.]
Я рад, что вы спросили об этом, потому что это определенно распространенная путаница для людей, смотрящих на Node.js. Вот мой лучший способ объяснить это:
Сам Node.js предлагает модуль http ,
createServer
метод которого возвращает объект, который вы можете использовать для ответа на HTTP-запросы. Этот объект наследуетhttp.Server
прототип.Connect также предлагает
createServer
метод, который возвращает объект, который наследует расширенную версиюhttp.Server
. Расширения Connect в основном предназначены для упрощения подключения промежуточного программного обеспечения . Вот почему Connect описывает себя как «платформу промежуточного программного обеспечения» и часто аналогичен Ruby's Rack.Express делает для Connect то, что Connect делает с модулем http: он предлагает
createServer
метод, расширяющийServer
прототип Connect . Таким образом, есть все функциональные возможности Connect, плюс визуализация представлений и удобный DSL для описания маршрутов. Рубин Синатра - хорошая аналогия.Тогда есть другие рамки, которые идут еще дальше и расширяют Express! Zappa , например, который интегрирует поддержку CoffeeScript, серверного jQuery и тестирования.
Вот конкретный пример того, что подразумевается под «промежуточным программным обеспечением»: «Из коробки ничего из вышеперечисленного не предоставляет вам статические файлы». Но просто добавьте
connect.static
(промежуточное программное обеспечение, которое поставляется с Connect), настроенное для указания на каталог, и ваш сервер предоставит доступ к файлам в этом каталоге. Обратите внимание, что Express также предоставляет промежуточное ПО Connect;express.static
так же, какconnect.static
. (Оба были известны какstaticProvider
до недавнего времени.)У меня сложилось впечатление, что большинство «настоящих» приложений Node.js в настоящее время разрабатываются с помощью Express; функции, которые он добавляет, чрезвычайно полезны, и все функции более низкого уровня все еще там, если вы этого хотите.
источник
Принятый ответ действительно старый (и теперь неправильный). Вот информация (с источником), основанная на текущей версии Connect (3.0) / Express (4.0).
Что поставляется с Node.js
http / https,
createServer
который просто принимает обратный вызов (req, res), напримерЧто подключает добавляет
Промежуточное программное обеспечение - это, в основном, любое программное обеспечение, которое находится между кодом вашего приложения и некоторым низкоуровневым API. Connect расширяет функциональность встроенного HTTP-сервера и добавляет структуру плагинов. Плагины действуют как промежуточное ПО и, следовательно, подключаются - это структура промежуточного ПО
Как это сделать, довольно просто ( и на самом деле код очень короткий! ). Как только вы позвоните,
var connect = require('connect'); var app = connect();
вы получите функцию,app
которая может:.use
( источник ) для управления плагинами ( которая приходит отсюда из-за этой простой строки кода ).Из-за 1.) вы можете сделать следующее:
Объедините с 2.) и вы получите:
Connect предоставляет служебную функцию для регистрации,
http
чтобы вам не нужно было звонитьhttp.createServer(app)
. Онlisten
вызывается, и код просто создает новый http-сервер, регистрирует соединение как обратный вызов и передает аргументыhttp.listen
. Из источникаИтак, вы можете сделать:
Это все еще ваш старый добрый
http.createServer
с фреймворком плагинов на вершине.Что ExpressJS добавляет
ExpressJS и Connect - это параллельные проекты. Connect - это просто промежуточное ПО с приятной
use
функцией. Экспресс не зависит от Connect ( см. Package.json ). Однако он делает все, что подключается, то есть:createServer
как Like Connect, так как это тоже просто функция, которая может приниматьreq
/res
пара ( источник ).listen
для регистрации себя с httpВ дополнение к тому, что предоставляет connect (который выражает дубликаты), он обладает множеством дополнительных функций. например
Промежуточное программное обеспечение является общим
use
Функция ExpressJS и подключение совместит и поэтому промежуточный слой разделяет . Оба являются промежуточными средами, экспресс только больше, чем простая структура промежуточного программного обеспечения .Какой из них вы должны использовать?
Мое мнение: вы достаточно информированы - на основании вышеизложенного - чтобы сделать свой собственный выбор.
http.createServer
если вы создаете что-то вроде connect / expressjs с нуля.http.createServer
Большинство людей должны просто использовать ExpressJS.
Что плохого в принятом ответе
Возможно, это было правдой, но сейчас это не так:
Неправильно. Он не расширяет его и, как вы видели ... использует его
Экспресс 4.0 даже не зависит от подключения. см. текущий раздел зависимостей package.json
источник
Node.js
Node.js - это движок JavaScript для серверной части.
В дополнение ко всем возможностям js он включает сетевые возможности (например, HTTP) и доступ к файловой системе.
Это отличается от js на стороне клиента, где сетевые задачи монополизированы браузером, и доступ к файловой системе запрещен по соображениям безопасности.
node.js в качестве веб-сервера: экспресс
То, что работает на сервере, понимает HTTP и может получить доступ к файлам, звучит как веб-сервер. Но это не один.
Чтобы node.js вел себя как веб-сервер, нужно его запрограммировать: обрабатывать входящие HTTP-запросы и предоставлять соответствующие ответы.
Это то, что делает Express: это реализация веб-сервера в js.
Таким образом, реализация веб-сайта аналогична настройке маршрутов Express и программированию специфических функций сайта.
Middleware и Connect
Обслуживание страниц включает в себя ряд задач. Многие из этих задач хорошо известны и очень распространены, поэтому модуль Connect узла (один из множества модулей, доступных для работы под узлом) реализует эти задачи.
Смотрите текущее впечатляющее предложение:
Connect - это фреймворк, и через него вы можете выбрать (под) модули, которые вам нужны.
Страница Contrib Middleware перечисляет длинный список дополнительных промежуточных программ .
Сам по себе Express поставляется с наиболее распространенным промежуточным ПО Connect.
Что делать?
Установите node.js.
Node поставляется с npm , менеджером пакетов узла .
Команда
npm install -g express
загрузит и установит экспресс по всему миру (см. Руководство по экспрессу ).Запуск
express foo
в командной строке (не в узле) создаст готовое к запуску приложение с именем foo. Перейдите в его (только что созданный) каталог и запустите его с помощью узла с командойnode <appname>
, затем откройтеhttp://localhost:3000
и посмотрите. Теперь вы в.источник
Connect предлагает API более высокого уровня для общих функций HTTP-сервера, таких как управление сеансами, аутентификация, ведение журнала и многое другое. Экспресс построен на основе Connect с расширенными (подобными Sinatra) функциональными возможностями.
источник
Node.js
сам предлагает модуль HTTP, метод которого createServer возвращает объект, который можно использовать для ответа на запросы HTTP. Этот объект наследуетhttp.Server
прототип.источник
Связанная информация, особенно если вы используете NTVS для работы с Visual Studio IDE. NTVS добавляет в Visual Studio 2012, 2013 как инструменты NodeJS, так и Express, строительные леса и шаблоны проектов.
Кроме того, неверно указано слово, которое вызывает ExpressJS или Connect как «WebServer». Вы можете создать базовый веб-сервер с ними или без них. Базовая программа NodeJS также может использовать модуль http для обработки запросов http, таким образом становясь рудиментарным веб-сервером.
источник
Промежуточное ПО, как следует из названия, на самом деле промежуточное ПО находится между серединой .. серединой чего? середина запроса и ответа .. как запрос, ответ, экспресс-сервер находятся в экспресс-приложении на этой картинке, вы можете видеть, что запросы поступают от клиента, затем сервер экспресс-обслуживания выполняет эти запросы ... затем давайте копать глубже ... на самом деле мы можем разделить это вся задача всего экспресс-сервера в маленьких отдельных задачах, как в этом случае. как промежуточное программное обеспечение располагается между запросом и ответом небольшой кусок серверных частей, выполняющих какую-то конкретную задачу, и передает запрос следующей ... наконец, выполняя все задачи, ответ был получен ... все промежуточное программное обеспечение может получить доступ к объекту запроса, объекту ответа и следующей функции запроса цикл ответа ..
Это хороший пример для объяснения промежуточного программного обеспечения в видео Express YouTube для промежуточного программного обеспечения
источник
Глупый простой ответ
Connect и Express являются веб-серверами для nodejs. В отличие от Apache и IIS, они оба могут использовать одни и те же модули, называемые «промежуточным программным обеспечением».
источник