Node.js

Node.js, Node

Что это такое

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

Почему это важно

Практическая привлекательность — один язык на всём стеке: один и тот же разработчик переходит между браузером и сервером, а типы и проверки можно разделить между ними. Эксплуатационная выгода — в модели: сервисы, которые в основном ждут сеть (а это большинство API), обслуживает один асинхронный процесс, и он же эффективно расходует память, избегая затрат на планирование множества потоков. Однако у этой модели есть цена: любое долгое вычисление блокирует всё остальное, а асинхронным потоком управления нужно управлять осознанно, а не полагаться на среду.

Что в этом треке

  1. Цикл событий (05-backend-data/02-nodejs/01-the-event-loop) — как один поток обслуживает много конкурентных операций, не блокируясь.
  2. Модули и среда исполнения (05-backend-data/02-nodejs/02-modules-and-the-runtime) — система модулей, стандартная библиотека и то, что даёт среда.

Предварительные требования

Что читать дальше

  • JavaScript (02-frontend/06-javascript) — язык, который выполняет эта среда, поэтому читайте его первым.
  • Express.js (05-backend-data/08-expressjs) — фреймворк, с которого начинается большинство серверного JavaScript.
  • Go (05-backend-data/05-go) — второй компилируемый язык этого трека и очевидное сравнение для конкурентных сетевых сервисов.