hostprofi.ru
Подобрать хостинг
Термин

Node.js (как сервер)

краткое определение

Node.js — платформа для JavaScript на сервере с асинхронным event loop. Обрабатывает тысячи одновременных соединений в одном потоке, используется для REST API, WebSocket и SSR.

Node.js — платформа для выполнения JavaScript на сервере на основе движка V8 от Google. В отличие от Apache с PHP, Node.js обрабатывает запросы в одном потоке через event loop без блокировки I/O. Это обеспечивает высокую производительность при многих одновременных соединениях.

Event Loop и неблокирующий I/O

Ключевое отличие от традиционных серверов: Node.js не создаёт отдельный поток или процесс на каждый запрос. Event loop обрабатывает тысячи соединений в одном потоке, передавая I/O-операции (запросы к БД, файловая система, сеть) библиотеке libuv для асинхронного выполнения. Пока I/O выполняется, event loop обрабатывает другие запросы.

Слабое место: CPU-intensive задачи (шифрование, обработка изображений) блокируют event loop и замедляют все остальные запросы. Для них используют Worker Threads (Node.js 10+) или очередь задач с отдельными worker-процессами.

Популярные фреймворки

  • Express.js — минималистичный фреймворк, де-факто стандарт. npm: >30 млн загрузок/неделю.
  • Fastify — быстрее Express на 20–40%, встроенная валидация через JSON Schema.
  • NestJS — TypeScript, Angular-подобная архитектура, enterprise-решения.
  • Next.js — SSR/SSG для React, файловый роутинг.
  • Hapi.js — строгая валидация входных данных, популярен в финтехе.

Node.js в хостинге

На VPS Node.js-приложение запускают через PM2 (Process Manager 2) для автоматического перезапуска при сбое и управления кластером:

# Запуск приложения через PM2
pm2 start app.js --name myapp
pm2 startup          # автозапуск при перезагрузке
pm2 save             # сохранить список процессов

Перед Node.js ставят Nginx как reverse proxy для отдачи статики, SSL-терминации и балансировки нагрузки:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

История

Node.js создан Райаном Далем (Ryan Dahl) и представлен на JSConf EU в ноябре 2009 года. Движок V8 взят из Google Chrome. В 2011 году npm (Node Package Manager) стал частью стандартной поставки. В 2014 году разработчики создали форк io.js из-за медленного развития, в 2015 году он воссоединился с Node.js в рамках Node.js Foundation. OpenJS Foundation основана в 2019 году. Node.js 18 (2022) — первая LTS-версия с V8 10.x и встроенным Fetch API.

На что обращать внимание

Node.js потребляет больше памяти, чем PHP на аналогичной нагрузке — minimum 256 МБ для простых приложений. На VPS с 1 ГБ RAM несколько Node.js-приложений требуют тщательного управления памятью. Docker упрощает изоляцию: каждое приложение в своём контейнере с лимитами --memory=256m. Для production всегда использовать LTS-версии Node.js — они поддерживаются 30 месяцев.

Сравнение с PHP

ПараметрNode.jsPHP (FPM)
МодельАсинхронный event loopСинхронные процессы/воркеры
WebSocketНативноТребует отдельного сервера
CPU-нагрузкаБлокирует event loopИзолирован в воркере
Экосистемаnpm: 2 млн+ пакетовComposer/Packagist

Другие термины