$ sudo teach IT
МОДУЛЬ 12 · УРОК 3

Node.js: JavaScript вне браузера

JavaScript изначально создавался для браузеров — чтобы делать кнопки интерактивными и анимировать страницы. Но в 2009 году появился Node.js и изменил всё: теперь один и тот же язык работает и на фронтенде, и на сервере. Узнаем, как и зачем.

⏱ ~25 минут 🎓 Для новичков 🟢 Node.js

🌱 Что такое Node.js и откуда он взялся

До 2009 года JavaScript работал только в браузере. Если хотел писать серверы — учи PHP, Ruby или Python. Если хотел делать интерфейсы — учи JavaScript. Разделение было жёстким.

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

🟢 Node.js — это среда выполнения JavaScript вне браузера. Он позволяет запускать JS-код прямо на компьютере или сервере, без браузера. Работает на Windows, macOS, Linux.

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

🎯 Зачем нужен Node.js — три главных применения

🌐 1. Веб-серверы и API

Node.js отлично справляется с созданием HTTP-серверов — программ, которые принимают запросы от браузеров и отвечают данными. На нём работают Netflix, LinkedIn, Uber. Фреймворки Express, Fastify, NestJS делают создание серверов удобным.

⚙️ 2. CLI-инструменты и скрипты

Те самые npm, webpack, Vite, ESLint, Prettier — всё это программы на Node.js! Вы можете писать скрипты для автоматизации: переименование файлов, парсинг данных, генерация отчётов.

🔧 3. Инструменты сборки

Webpack, Vite, Rollup — сборщики, которые превращают ваш исходный код в оптимизированный файл для браузера. Next.js, React, Vue — их dev-серверы работают на Node.js. Даже если вы фронтенд-разработчик, Node.js уже у вас под капотом.

⚖️ Браузерный JS vs Node.js: в чём разница

Один язык, две разные среды. Понимание разницы спасёт вас от многих ошибок:

🌐 Браузер
  • Есть window, document, navigator
  • DOM для работы с HTML
  • localStorage, sessionStorage
  • fetch API для HTTP-запросов
  • Нет доступа к файловой системе
  • Нет доступа к сети напрямую
🟢 Node.js
  • Нет window и document
  • Есть process (аргументы, переменные окружения)
  • Модуль fs — чтение/запись файлов
  • Модуль http — создание серверов
  • Полный доступ к файловой системе
  • Сетевое программирование

⚠️ Частая ошибка новичков: пытаться использовать document.getElementById() в Node.js или модуль fs в браузере. Среды разные — набор API разный.

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

Node.js поставляется с набором встроенных модулей — их не нужно устанавливать через npm. Вот самые важные:

📄 fs — файловая система

Читать файлы, записывать, создавать папки, удалять, переименовывать — всё через модуль fs.

import { readFile, writeFile, mkdir } from 'fs/promises';

// Читаем файл
const content = await readFile('./data.txt', 'utf-8');
console.log(content);

// Записываем файл
await writeFile('./result.txt', 'Привет из Node.js!');

// Создаём папку
await mkdir('./output', { recursive: true });

🗂️ path — работа с путями файлов

Работа с путями к файлам и папкам в кроссплатформенном стиле — на Windows пути через \, на Linux/Mac через /, path всё унифицирует.

import path from 'path';

const filePath = '/users/ivan/project/src/index.js';

console.log(path.dirname(filePath));   // /users/ivan/project/src
console.log(path.basename(filePath));  // index.js
console.log(path.extname(filePath));   // .js

// Склеить путь правильно на любой ОС
const joined = path.join('src', 'components', 'Button.js');
console.log(joined); // src/components/Button.js (или src\components\Button.js на Windows)

🌐 http — HTTP-сервер

Встроенный модуль для создания HTTP-серверов. В реальных проектах используют Express поверх него, но базовое понимание важно.

import http from 'http';

const server = http.createServer((request, response) => {
  // Устанавливаем заголовки ответа
  response.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });

  // Отправляем тело ответа
  response.end('Привет! Это мой первый Node.js сервер!');
});

// Запускаем сервер на порту 3000
server.listen(3000, () => {
  console.log('Сервер запущен: http://localhost:3000');
});

Теперь если запустить этот файл командой node server.js и открыть http://localhost:3000 в браузере — вы увидите текст «Привет! Это мой первый Node.js сервер!». Вот так просто создаётся веб-сервер на JavaScript.

🛠️ Первые шаги: запускаем код в Node.js

Попробуем написать и запустить настоящий Node.js скрипт. Создайте файл hello.js:

// hello.js

// В Node.js есть объект process — информация о среде
console.log('Версия Node.js:', process.version);
console.log('Платформа:', process.platform); // 'win32', 'darwin', 'linux'

// Аргументы командной строки
const args = process.argv.slice(2); // Убираем первые два (путь node и файл)
const name = args[0] || 'Мир';

console.log(`Привет, ${name}!`);

Запустите в терминале:

node hello.js           # Привет, Мир!
node hello.js Алиса     # Привет, Алиса!

Давайте напишем более полезный скрипт — генератор файлов:

// generator.js — создаёт HTML-файл по шаблону
import { writeFile } from 'fs/promises';
import path from 'path';

const [,, pageName, title] = process.argv;

if (!pageName || !title) {
  console.error('Использование: node generator.js имя-файла "Заголовок"');
  process.exit(1); // Завершить с кодом ошибки
}

const html = `


  
  ${title}


  

${title}

Страница создана автоматически.

`; const filePath = path.join('.', `${pageName}.html`); await writeFile(filePath, html, 'utf-8'); console.log(`Файл создан: ${filePath}`);
node generator.js about "О нас"
# Создаст файл about.html с заголовком "О нас"

🚀 Где используется Node.js — реальные примеры

⚡
Express.js

Самый популярный фреймворк для REST API на Node.js. Минималистичный и гибкий.

▲
Next.js

React-фреймворк с серверным рендерингом на Node.js. Один из самых популярных в 2024-2026.

🖥️
Electron

Создание десктопных приложений на JS. VS Code, Slack, Discord — написаны на Electron.

⚙️
Инструменты

npm, webpack, Vite, ESLint, Prettier, Jest — всё это программы на Node.js, которые вы уже используете.

✅ Итоги урока

  • Node.js — среда выполнения JS вне браузера, основана на движке V8 из Chrome
  • Применяется для: веб-серверов, CLI-скриптов, инструментов сборки, десктопных приложений
  • В браузере есть window/document, в Node.js — fs/http/process
  • Модуль fs — чтение и запись файлов; path — кроссплатформенные пути
  • Модуль http — создание HTTP-серверов: http.createServer()
  • process.argv — аргументы командной строки; process.exit() — завершение процесса
  • Фреймворки на Node.js: Express, Next.js, Electron, Fastify, NestJS

В следующем уроке — регулярные выражения: мощный инструмент для поиска и замены текста по шаблону. 🔍

Тест: Node.js

6 вопросов

Запуск скрипта через Node.js

Напишите команду для терминала, которая запускает файл script.js с помощью Node.js. И объясните, что содержит process.argv в контексте Node.js.

Разница browser vs Node.js

Назовите один объект/API, который есть в браузере, но отсутствует в Node.js, и один модуль/API, который есть в Node.js, но отсутствует в браузере.