Что такое Node.js?

Node.js — это серверная платформа, построенная на движке V8 от Google Chrome, которая позволяет выполнять JavaScript код вне браузера для создания серверных приложений.

Ключевые особенности Node.js

  • Неблокирующий I/O — все операции выполняются асинхронно
  • Однопоточность — один поток с циклом событий (event loop)
  • NPM — крупнейший в мире репозиторий пакетов
  • Кроссплатформенность — работает на Windows, macOS, Linux

Области применения Node.js

  • Web API — создание RESTful сервисов и GraphQL API
  • Микросервисы — легковесные и быстрые сервисы
  • Инструменты разработки — webpack, gulp, eslint
  • Чат-приложения — WebSocket соединения в реальном времени

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

  • Express.js — минималистичный и гибкий веб-фреймворк
  • Koa.js — современный фреймворк от создателей Express
  • Fastify — высокопроизводительный фреймворк
  • NestJS — фреймворк для корпоративных приложений

Встроенные модули Node.js

  • fs — работа с файловой системой
  • http — создание HTTP серверов и клиентов
  • path — работа с путями файлов
  • crypto — криптографические функции

Установка и начало работы

Установка Node.js на разных системах:

 1
 2# Ubuntu/Debian
 3sudo apt update && sudo apt install nodejs npm
 4
 5# macOS через Homebrew
 6brew install node
 7
 8# Через официальный установщик
 9# Скачай с https://nodejs.org
10
11# Проверка установки
12node --version
13npm --version
14    

Пример простого HTTP сервера

 1
 2const http = require('http');
 3
 4const server = http.createServer((req, res) => {
 5  res.writeHead(200, { 'Content-Type': 'text/plain' });
 6  res.end('Привет от Node.js сервера!');
 7});
 8
 9server.listen(3000, () => {
10  console.log('Сервер запущен на http://localhost:3000');
11});
12    

Управление пакетами

Работа с NPM и альтернативными менеджерами:

 1
 2# Инициализация проекта
 3npm init -y
 4
 5# Установка зависимостей
 6npm install express
 7npm install --save-dev nodemon
 8
 9# Использование Poetry (если есть Python окружение)
10poetry add nodejs

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

Подходит ли Node.js для CPU-интенсивных задач?

Node.js лучше всего подходит для I/O интенсивных приложений из-за своей асинхронной архитектуры. Для CPU-интенсивных задач лучше использовать другие технологии или worker threads.

В чем разница между Node.js и браузерным JavaScript?

Node.js предоставляет API для работы с файловой системой, сетью и операционной системой, чего нет в браузере. Браузерный JavaScript имеет DOM API, которого нет в Node.js.