Что такое Connect, Express и "middleware" в Node.js?
Несмотря на то что я хорошо знаю JavaScript, у меня есть путаница относительно того, что конкретно делают три проекта в экосистеме Node.js. Это что-то вроде Rack в Rails? Можете, пожалуйста, объяснить?
4 ответ(ов)
Connect предоставляет "высокоуровневые" API для распространенных функций HTTP-сервера, таких как управление сессиями, аутентификация, логирование и многое другое. Express основан на Connect и предлагает более продвинутые функции, схожие с Sinatra.
Node.js предоставляет модуль HTTP, в котором метод createServer возвращает объект, позволяющий обрабатывать HTTP-запросы. Этот объект наследует прототип http.Server
.
Связанная информация, особенно если вы используете NTVS для работы с IDE Visual Studio. NTVS добавляет инструменты для NodeJS и Express, а также включает в себя шаблоны проектов и функционал генерации кода для Visual Studio 2012 и 2013.
Также стоит отметить, что терминология, называющая ExpressJS или Connect "веб-сервером", является некорректной. Вы можете создать базовый веб-сервер как с их помощью, так и без них. Простой NodeJS-программа может использовать модуль http для обработки HTTP-запросов, становясь таким образом примитивным веб-сервером.
Middleware — это специальные функции, которые выполняются между входящими запросами и исходящими ответами в нашем API. Например, мы можем использовать следующий код:
app.use((req, res, next) => { })
В этом случае next
работает как промежуточное ПО между req
и res
в Express.js. Функция next
передает управление следующему middleware или маршруту. Это позволяет вам добавлять дополнительные функциональные возможности, например, логирование, аутентификацию или обработку ошибок, перед тем как запрос достигнет конечной точки вашего приложения.
bodyParser устарел в Express 4
В чем разница между --save и --save-dev?
Node / Express: EADDRINUSE, адрес уже занят - как остановить процесс, использующий порт?
Как задать переменные окружения из файла package.json?
Как указать необходимую версию Node.js в файле package.json?