Menu

Что такое Node.js и зачем он нужен: среда для JavaScript

Node.js это среда выполнения, которая запускает JavaScript вне браузера, на серверах и в терминале. Это не язык и не фреймворк: это V8 плюс event loop плюс API для файлов, сети и процессов.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Node.js это среда выполнения, которая запускает JavaScript вне браузера: на сервере, в терминале или как инструмент командной строки. Это не язык программирования (язык это JavaScript) и не фреймворк (Express это фреймворк, который работает на Node.js). Node.js объединяет движок V8 от Google, который выполняет JavaScript, с event loop и встроенными API для файлов, сети и процессов, которых нет в браузерах.

Программа вывела содержимое файла, мажорную версию (v24) и undefined для window, потому что у Node.js нет веб-страницы, которая бы его дала. fs и process есть только в Node.js; запустите те же строки во вкладке браузера, и первая из них бросит ошибку.

Node.js это фреймворк или язык?

Ни то, ни другое. Язык это JavaScript. Node.js это программа, которая его выполняет, так же как JVM выполняет Java, а CPython выполняет Python. Фреймворки работают поверх: Express, Fastify и NestJS это библиотеки, которые ставятся в проект на Node.js. Подробное сравнение на странице Node.js и JavaScript.

Внутри Node.js состоит из четырёх частей:

  • V8, движок JavaScript из Chrome. Он превращает ваш код в машинный и выполняет его.
  • libuv, библиотека на C, которая даёт event loop и выполняет медленную работу (диск, сеть, таймеры) в фоне, а потом передаёт результат вашим callback.
  • Собственные API Node: fs для файлов, http для серверов, path, process, crypto, events и другие, доступные через require или import без установки.
  • npm, менеджер пакетов, который идёт вместе с Node.js и даёт доступ к самому большому реестру пакетов среди всех языков.

Как запустить файл Node.js

Установите Node.js с официального сайта (берите версию LTS), затем проверьте его в терминале и запустите файл:

node --version     # prints v24.x.x or similar
node app.js        # runs app.js and exits when it has nothing left to do
node               # with no file: an interactive prompt (the REPL)

Программа завершается сама, когда ей больше нечего ждать: нет таймеров, открытого сервера или незаконченного чтения файла. Поэтому скрипт завершается, а веб-сервер продолжает работать.

Неблокирующий ввод-вывод, главная идея

Node.js не ждёт медленную работу. Он запускает чтение файла или сетевой запрос, продолжает выполнять следующие строки и вызывает вашу функцию, когда результат готов.

Две строки console.log после readFile выполнились первыми, а содержимое файла пришло последним. Так один процесс Node.js обслуживает тысячи соединений: пока один запрос ждёт базу данных, event loop продолжает двигать остальные.

Node.js и браузер

БраузерNode.js
Где работаетНа веб-страницеВ терминале или на сервере
Что естьwindow, document, DOM, localStoragefs, process, http, Buffer, require
Глобальный объектwindow (и globalThis)global (и globalThis)
Файлы на дискеНет доступаПолный доступ с правами вашего пользователя
setTimeout, console, fetch, URLДаДа

Для чего используют Node.js

  • Веб-серверы и API: бэкенды на REST и GraphQL, часто с Express.
  • Приложения реального времени: чаты, живые дашборды и многопользовательские игры на WebSocket, где одновременно открыто много соединений.
  • Инструменты командной строки: сам npm, Vite, ESLint, Prettier и компилятор TypeScript работают на Node.js.
  • Скрипты и автоматизация: переименование файлов, вызовы API, миграции данных.

Чаще всего Node.js используют для HTTP сервера, и для первого хватит встроенного модуля http:

Сервер ответил на GET /hello путём, который получил. Измените путь в строке запроса на /anything и отправьте: ответ изменится следом, потому что этот сервер обрабатывает любой URL одной функцией.

Когда выбирать Node.js

Выбирайте Node.js, когда работа в основном состоит из ожидания ввода-вывода (запросы, базы данных, файлы) и вы хотите один язык на фронтенде и бэкенде. Он хуже подходит для долгих вычислений, нагружающих процессор, вроде кодирования видео или больших численных расчётов: долгое вычисление блокирует единственный поток JavaScript, и все остальные запросы его ждут.

Часто задаваемые вопросы

Node.js это фронтенд или бэкенд?

В основном бэкенд. Node.js работает на сервере или на вашем компьютере, а не в браузере посетителя. Фронтенд-разработчики всё равно пользуются им каждый день, потому что npm, Vite и ESLint это программы на Node.js.

Кто и когда создал Node.js?

Райан Дал выпустил Node.js в 2009 году. Сейчас его поддерживает OpenJS Foundation: новая мажорная версия выходит каждые полгода, а версии с чётными номерами получают долгосрочную поддержку.

Нужно ли знать JavaScript перед Node.js?

Да, хотя бы основы: переменные, функции, объекты, массивы и callback или промисы. Node.js добавляет API, а не новый синтаксис, так что всё, что вы знаете о языке, применяется напрямую.

Node.js однопоточный?

Ваш JavaScript выполняется в одном потоке. За кулисами Node.js использует небольшой пул потоков для работы с файловой системой, DNS и частью криптографии, поэтому медленный ввод-вывод не блокирует ваш код, пока он ждёт.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

Начать