JavaRush /Курсы /Модуль 4: Node.js, Next.js и Angular /Что такое Node.js, философия, отличие от браузера

Что такое Node.js, философия, отличие от браузера

Модуль 4: Node.js, Next.js и Angular
1 уровень , 0 лекция
Открыта

1. Node.js: что это вообще такое?

Если коротко: Node.js — это среда выполнения JavaScript вне браузера. Она позволяет запускать JS-код где угодно: на сервере, на вашем компьютере, в облаке, на Raspberry Pi, даже на холодильнике (если тот достаточно умен). Но давайте разберёмся подробнее.

Историческая справка

Когда-то JavaScript был строго «браузерным» языком. Он мог только менять кнопочки на сайте, валидировать формы и, максимум, показывать всплывающие окна. Но в 2009 году Райан Дал (Ryan Dahl) решил: «А почему бы не использовать JavaScript для серверных задач?» Так появился Node.js.

Node.js построен на движке V8 — это тот же движок, который «крутит» JS в Google Chrome. Но Node.js — это не браузер. Это самостоятельная программа, которая умеет запускать JS-код, работать с файлами, сетью, базами данных, но… не умеет показывать вам кнопочки и DOM.

Краткое определение

Node.js — это среда выполнения JavaScript, построенная на движке V8, позволяющая запускать JS-код вне браузера.

2. Почему Node.js стал таким популярным?

  • Один язык для всего. Можно писать и фронтенд, и бэкенд на одном языке — JavaScript. Это мечта ленивого программиста: не нужно учить два языка, чтобы сделать сайт от и до.
  • Асинхронность и событийная модель. Node.js идеально подходит для серверов, которые обрабатывают много одновременных запросов (например, чаты, игры, API).
  • Скорость. Движок V8 очень быстрый, а Node.js не тратит ресурсы на отрисовку DOM.
  • npm — гигантский склад библиотек. Самый крупный репозиторий модулей в мире. Всё, что только можно придумать, уже кто-то написал.
  • Кроссплатформенность. Node.js одинаково работает на Windows, Linux, macOS.

3. Как устроен Node.js: архитектура и философия

V8 + C++ = Node.js

Node.js берёт движок V8 (он на C++), добавляет к нему «обвязку» — модули для работы с файлами, сетью, процессами, и предоставляет вам интерфейс на JavaScript. То есть, когда вы пишете fs.readFile(), внутри происходит магия: ваш JS вызывает C++-код, который реально читает файл.

Событийно-ориентированная (event-driven) модель

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

Схема работы event loop


+---------------------+
|   Ваш JS-код        |
+---------------------+
           |
           v
+---------------------+
|   Node.js (V8)      |
+---------------------+
           |
           v
+---------------------+
|   Event Loop        | <---+
+---------------------+     |
           |                |
           v                |
+---------------------+     |
|   Системные вызовы  |-----+
| (файлы, сеть и т.д.)|
+---------------------+
  • Ваш код отдаёт задачу (например, прочитать файл).
  • Node.js не блокируется, а продолжает выполнять другие задачи.
  • Когда файл прочитан, event loop сообщает вашему коду: «Готово!»

Почему это круто?

В старых языках (например, PHP, Python без async, Java) сервер часто «зависает» на каждом запросе к базе или файлу. В Node.js сервер может обслуживать тысячи клиентов одновременно, не блокируясь на долгих операциях.

4. Node.js vs Браузер: что общего и чем они отличаются?

Пора сравнить Node.js и браузер — ведь оба запускают JavaScript, но делают это совершенно по-разному.

Что у них общего?

  • Язык. Синтаксис JS одинаковый (let, const, функции, объекты, стрелочные функции).
  • Движок V8. Если у вас Chrome и Node.js — внутри оба используют V8.
  • Базовые конструкции:
    • Переменные, циклы, условия, функции.
    • Массивы, объекты, строки, числа.
    • Базовые методы типа Array.map, String.split и т.д.

В чём принципиальные отличия?

Браузер Node.js
Где работает На компьютере пользователя На сервере, в терминале, в облаке
Доступ к DOM Есть (
document
,
window
,
alert
)
Нет (никакого DOM, только консоль)
Доступ к файлам Нет (ради безопасности) Есть (можно читать/писать файлы)
Сеть Только HTTP-запросы (
fetch
,
xhr
)
TCP, UDP, HTTP, сокеты и др.
Модули Нет (до ES6 import/export) Есть (
require
,
import
, npm)
Окружение Ограничено песочницей браузера Почти полный доступ к ОС
UI HTML, CSS, Canvas, WebGL Только вывод в консоль (или API)
API
window
,
document
,
localStorage
fs
,
path
,
os
,
process
,
http

Пример: что есть в браузере, но нет в Node.js

console.log(window); // В Node.js: ReferenceError: window is not defined
alert('Hello!');     // В Node.js: ReferenceError: alert is not defined
document.body;       // В Node.js: ReferenceError: document is not defined

Пример: что есть в Node.js, но нет в браузере

const fs = require('fs');
fs.readFile('text.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});
// В браузере: Uncaught ReferenceError: require is not defined

Аналогия

  • Браузер — это как театр: вы можете только смотреть спектакль, максимум — аплодировать.
  • Node.js — это как закулисье: вы можете управлять светом, сценой, даже менять сценарий или строить сам театр.

5. Где используется Node.js? Примеры и кейсы

Node.js — это не просто «сервер для сайтов». Он используется в огромном количестве задач:

  • Серверы и APIExpress.js, Koa, Fastify.
  • Чаты и онлайн-игры — благодаря асинхронности и WebSocket.
  • Инструменты для фронтендаWebpack, Gulp, ESLint, Prettier, Create React App.
  • Автоматизация — скрипты для сборки, тестирования, деплоя.
  • Работа с файлами — генерация отчетов, обработка данных.
  • Интернет вещей (IoT) — управление устройствами через JS.
  • CLI-приложения — например, npm, npx, gitpod и другие.

Пример: запуск простого JS-файла в Node.js

Создайте файл hello.js:

console.log('Привет, Node.js!');

В терминале:

node hello.js

Вывод:

Привет, Node.js!

6. Node.js глазами фронтендера: зачем это мне?

  • Автоматизация рутины: Сборка, минификация, тесты, запуск локального сервера — всё это делается через Node.js.
  • Разработка серверной части: Можно писать серверы, API и даже целые приложения на одном языке.
  • Полный стек JS: Вы можете быть Fullstack-разработчиком, не выходя за пределы JavaScript.
  • Работа с файлами и сетью: Генерируйте отчёты, парсите логи, делайте ботов — всё на JS.
  • Модули и npm: Используйте миллионы библиотек, не изобретая велосипед.

Как запускается Node.js-приложение?

  1. Устанавливаете Node.js (про это — в следующей лекции).
  2. Пишете JS-файл (например, app.js).
  3. Запускаете его через терминал:
    node app.js

Всё! Ваш код выполняется вне браузера, может читать файлы, слушать порты, делать запросы, и никто не скажет ему: «Эй, ты не можешь это делать!»

7. Типичные ошибки новичков при знакомстве с Node.js

Ошибка №1: Ожидание DOM и браузерных API.
Многие пытаются использовать document, window, alert — а их в Node.js нет. Вместо этого используйте консоль (console.log) и модули Node.js.

Ошибка №2: Не понимают, что такое require и import.
В браузере до недавнего времени не было модулей, а в Node.js они есть с самого начала. Здесь можно подключать модули (require('fs'), import ...), использовать npm.

Ошибка №3: Путают назначение Node.js и браузера.
Node.js — не для отрисовки интерфейса, а для серверных задач, автоматизации, работы с файлами и сетью.

Ошибка №4: Ожидание «окна» или визуального вывода.
Всё взаимодействие происходит через консоль, файлы, сеть — а не через окна, кнопки и формы.

Ошибка №5: Непонимание асинхронности.
В Node.js очень много кода работает асинхронно (через колбэки, промисы, async/await). Если вы думаете, что код будет идти строго сверху вниз, можно сильно удивиться!

1
Задача
Модуль 4: Node.js, Next.js и Angular, 1 уровень, 0 лекция
Недоступна
Создание и запуск простого скрипта на Node.js
Создание и запуск простого скрипта на Node.js
1
Задача
Модуль 4: Node.js, Next.js и Angular, 1 уровень, 0 лекция
Недоступна
Отличие между Node.js и браузером по доступу к глобальным объектам
Отличие между Node.js и браузером по доступу к глобальным объектам
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ