Node.js: что это за платформа

Node.js выполняет код JavaScript на компьютере или сервере. Движок V8, используемый также в Chrome, исполняет программу. Среда предоставляет доступ к сети, файловой системе и операционной системе.

JavaScript остаётся языком программирования, а Node.js служит средой выполнения. Фреймворк добавляет средства для построения приложения поверх этой среды. Например, Express помогает описывать маршруты веб-сервера.

Краткая история Node.js

В 2009 году Райан Даль представил Node.js сообществу CommonJS. Идея проекта: создание серверных приложений с событийным вводом и выводом. В первом объявлении уже описывались HTTP и работа с файлами.

Для чего нужен Node.js

Node.js подходит для серверной части веб-приложений и задач с множеством сетевых обращений. Например, сервер личного кабинета получает запрос пользователя, читает данные и отправляет ответ.

Для чата на Node.js продумайте хранение сообщений и повторное соединение. Для микросервиса на Node.js определите API обмена с другими компонентами.

Node.js можно использовать как сервер для интернета вещей: получать показания устройств и отправлять команды. Это не означает, что среда запускается на любом микроконтроллере. Другой пример применения: сервер совместной работы над текстом или сетевой игры.

Для чего нужен Node.js
ЗадачаКак используется Node.jsЧто продумать
Веб-сервис и APIПринимает запросы, вызывает нужную логику, возвращает данныеПрава доступа и обработку ошибок
Приложения реального времениПомогает организовать обмен сообщениями и уведомлениямиПовторное подключение и доставку сообщений
Инструменты разработкиЗапускает сборку и вспомогательные скриптыНастройки проекта и зависимости
Обработка файловЧитает данные и формирует результатРазмер файлов и доступную память
АвтоматизацияВыполняет повторяющиеся действия из командной строкиПроверку входных данных и журнал ошибок
Настольное приложениеElectron объединяет Node.js и Chromium для интерфейса на HTML, CSS и JavaScriptСборку под Windows, macOS или Linux

Как работает Node.js

Главная особенность Node.js: событийная модель и неблокирующий ввод и вывод. Приложение может ожидать данные из сети, продолжая обслуживать другие подключения. Благодаря этому ожидание ответа само по себе не останавливает всю программу.

Цикл событий, или Event Loop, организует выполнение обработчиков. JavaScript-код основного потока выполняется последовательно. Часть операций обслуживает операционная система, часть передаётся рабочим потокам библиотеки libuv.

Поэтому фраза «Node.js работает в одном потоке» требует уточнения. Она описывает обычное выполнение JavaScript в основном потоке, но не всю внутреннюю работу среды.

Цикл событий не прерывает долгую функцию ради равного распределения времени. Для тяжёлого расчёта в Node.js можно использовать worker_threads: отдельные потоки исполняют JavaScript параллельно. Для обычного сетевого ожидания такие потоки обычно не нужны.

  1. Сервер получает запрос и начинает выполнять его обработчик.
  2. Обработчик запускает асинхронную операцию, например чтение файла.
  3. Пока результат не готов, цикл событий может обрабатывать другую доступную работу.
  4. После завершения операции выполняется связанный с ней код продолжения.

Чем Node.js отличается от JavaScript в браузере

Язык общий, но окружение разное. Браузерный код управляет страницей через document и DOM. В обычной программе Node.js этих объектов нет, зато доступны серверные модули.

Представьте калькулятор на сайте. Функцию расчёта можно перенести на Node.js, если она не зависит от браузерных API. Чтение полей формы и вывод результата придётся заменить обработкой HTTP-запроса и ответа.

Разработчик выбирает версию Node.js на своём сервере и доступные возможности языка. На клиентской стороне нужно учитывать браузеры посетителей. Знание JavaScript упрощает переход с фронтенда на бэкенд, но не заменяет изучение баз данных и HTTP.

Преимущества и ограничения Node.js

Знакомый JavaScript можно применять и в браузере, и на сервере. Однако для серверной разработки нужны основы HTTP, работы с данными и обработки ошибок.

Node.js не гарантирует превосходства над PHP, Python или Java. Скорость зависит от нагрузки, библиотек и кода; сравнивайте решения на задаче своего проекта.

Высокая производительность важна для приложения с большим числом подключений. До выбора технологии проверьте самый тяжёлый сценарий на прототипе. Например, сравните время ответа при чтении данных и при расчёте отчёта: причины задержек могут различаться.

  • Асинхронная обработка подходит для большого количества операций ожидания.
  • Готовые пакеты позволяют использовать существующие решения, но требуют проверки зависимостей.
  • Node.js доступен для Windows, macOS и Linux: разработку можно начать на привычной операционной системе.
  • Тяжёлые вычисления требуют отдельного решения: переноса работы из основного потока или другой архитектуры.
  • Ошибки асинхронного кода сложнее искать без понятных журналов и воспроизводимых примеров.

Установка Node.js

Для установки Node.js откройте официальный раздел загрузок nodejs.org. Выберите свою операционную систему, архитектуру процессора и поддерживаемую ветку LTS. Для существующего приложения сначала проверьте требования проекта.

Документация npm предлагает установщики и менеджеры версий. Последние удобны, если вам нужно переключаться между окружениями разных проектов. Не смешивайте несколько способов установки без необходимости: иначе легко запустить другую копию Node.js.

  1. На Windows скачайте подходящий установщик Node.js и пройдите его шаги.
  2. На macOS используйте подходящий установщик или менеджер версий из официальной инструкции npm.
  3. На Linux выберите менеджер версий либо способ установки, указанный для вашей системы в документации.
  4. После установки откройте новое окно терминала или командной строки.
  5. Выполните команду node -v, затем npm -v. Обе должны вывести установленную версию.
node -v
npm -v

Какую версию Node.js выбрать

На сентябрь 2026 года для нового рабочего проекта можно рассматривать Node.js 24, ветку Active LTS. Перед обновлением существующего приложения проверьте совместимость его зависимостей. Последняя выпущенная версия не обязательно является лучшим выбором для рабочего сервера.

Официальный график разделяет Active LTS, Maintenance LTS и Current. Ветка Maintenance получает прежде всего критические исправления и обновления безопасности. Отдельные новые возможности могут добавляться по решению сопровождающих.

Какую версию Node.js выбрать
ВеткаСтатус на сентябрь 2026 годаПрактический ориентир
Node.js 24, KryptonActive LTSПоддержка по графику до апреля 2028 года
Node.js 22, JodMaintenance LTSДля совместимых существующих проектов; поддержка до апреля 2027 года
Node.js 26CurrentПереход в LTS запланирован на октябрь 2026 года

Первая программа на Node.js

Для начала создайте отдельную папку и откройте её в редакторе кода. Сохраните файл hello.cjs с примером ниже. Расширение .cjs явно выбирает систему модулей CommonJS.

Затем откройте терминал в этой папке и выполните node hello.cjs. В консоли появится строка Hello World. Функция console.log выводит сообщение, после чего программа завершается.

Интерактивный режим REPL

Node.js можно запустить без имени файла: введите node в терминале. Откроется REPL, интерактивная среда для выполнения выражений. Введите 2 + 3 и получите результат 5.

Этот режим удобен для небольших проверок синтаксиса. Для выхода введите .exit. Команды запуска файлов выполняйте уже в обычном терминале, после выхода из REPL.

console.log('Hello World');

HTTP-сервер на Node.js

Теперь напишем простой веб-сервер на Node.js. Сохраните код в файле server.cjs и выполните node server.cjs. Откройте в браузере http://127.0.0.1:3000/. Вы увидите ответ Hello World.

Адрес 127.0.0.1 в примере означает ваш компьютер. Порт 3000 выбран для учебного запуска. Сервер продолжает работать, пока вы не остановите процесс, например сочетанием Ctrl+C в терминале.

  • require подключает встроенный модуль node:http. Устанавливать этот модуль через npm не нужно.
  • http.createServer создаёт HTTP-сервер и принимает функцию обработки запросов.
  • Объект request содержит сведения о запросе, а response используется для отправки ответа.
  • Код состояния 200 обозначает успешный ответ. Заголовок Content-Type описывает формат содержимого.
  • response.end отправляет текст и завершает ответ. Вызов server.listen начинает прослушивание указанного адреса и порта.
const http = require('node:http');

const server = http.createServer((request, response) => {
  response.statusCode = 200;
  response.setHeader('Content-Type', 'text/plain; charset=utf-8');
  response.end('Hello World');
});

server.listen(3000, '127.0.0.1', () => {
  console.log('http://127.0.0.1:3000/');
});

Модули Node.js

Модуль отделяет часть логики: например, обработку заказа от ответа клиенту.

Node.js поддерживает CommonJS и стандартные ES-модули JavaScript. В CommonJS используются require и module.exports. В ES-модулях применяются import и export.

Расширение .cjs явно обозначает CommonJS, а .mjs обозначает ES-модуль. Для файлов .js учитывается в том числе поле type в package.json. Значение module выбирает ES-модули, commonjs явно выбирает CommonJS.

Встроенные возможности и сторонние библиотеки

В Node.js модуль node:http нужен для HTTP, node:fs для файлов, node:path для путей. Они входят в среду выполнения, установка через npm не требуется.

Сторонние пакеты устанавливают отдельно. Перед добавлением проверьте документацию, репозиторий, тесты и совместимость с вашей версией Node.js.

Экосистема Node.js позволяет построить сервис из готовых компонентов. Однако популярность библиотеки не гарантирует удобства: оцените её API и сложность сопровождения. Для совместной работы программистов полезны примеры использования и понятные правила обновления зависимостей.

Node.js также загружает нативные модули с расширением .node. Так JavaScript вызывает скомпилированный код, например на C++, через интерфейс модуля.

Пакеты npm для Node.js

npm, менеджер пакетов, устанавливает зависимости проекта. Обычный установщик Node.js включает npm. После установки проверьте доступность обеих команд в терминале.

В новой учебной папке выполните npm init -y: команда создаст package.json с настройками по умолчанию. В существующем проекте используйте его package.json.

Команда npm install express добавит пакет express и запишет зависимость в package.json. При обычной локальной установке пакеты находятся в папке node_modules. Вы сможете подключать установленную библиотеку из кода.

Команда npm install без имени пакета устанавливает зависимости из package.json. Файл package-lock.json фиксирует их дерево, сохраняйте его в репозитории. Для установки по согласованному lock-файлу используйте npm ci: при расхождении с package.json команда завершится ошибкой.

Когда нужен фреймворк Express

Встроенного node:http достаточно, чтобы изучить запросы и ответы. В Express маршруты связывают адрес и метод запроса с обработчиком. Промежуточные обработчики, middleware, позволяют выполнять общую работу перед ответом.

Express упрощает создание веб-приложений и API на Node.js, но не заменяет саму среду. Начните со встроенного сервера, затем перенесите обработку разных адресов в маршруты фреймворка.

npm init -y
npm install express

Частые ошибки при запуске Node.js

Сначала запустите Hello World, затем HTTP-сервер и только после этого подключайте зависимости. При ошибке проверьте команду запуска и текущую папку. Сохраните полный текст ошибки и оставьте минимальный пример, на котором она повторяется.

Частые ошибки при запуске Node.js
СитуацияЧто проверить
Команда node не найденаЗавершилась ли установка; видит ли новый терминал путь к программе
Не найден файл приложенияОткрыта ли нужная папка; совпадает ли имя файла с аргументом команды
Не найден сторонний пакетУстановлены ли зависимости именно в папке этого проекта
require недоступенНе запускается ли CommonJS-код как ES-модуль
Порт уже занятНе остался ли предыдущий сервер запущенным; можно ли выбрать другой порт
Изменения не видныСохранён ли файл; перезапущен ли процесс, если автоматический перезапуск не настроен

Node.js: начало работы

Начните с переменных, функций, объектов, массивов и обработки ошибок. Далее изучайте асинхронный код и HTTP. Учебный проект на Node.js: список задач с добавлением, просмотром, сохранением записей и проверкой ввода.

Для бизнес-задачи опишите действия пользователя, интеграции и ограничения. Услуга «разработка веб-приложений»: /uslugi/veb-prilozheniya/. В seosite1 цена после брифа; работаем по России удалённо.

Источники

  1. Node.js: введение и пример HTTP-сервера
  2. Node.js: цикл событий и рабочие потоки
  3. Node.js Release Working Group: график и этапы поддержки
  4. npm: команда install и зависимости
  5. Node.js: CommonJS и выбор системы модулей
  6. Express: веб-фреймворк для Node.js
  7. Electron: настольные приложения с Node.js и Chromium
  8. Райан Даль: первое объявление Node в сообществе CommonJS, 2009