Чем серверный JavaScript отличается от браузерного

Один язык — две среды. Что есть в Node и чего нет, и наоборот.

В браузере вокруг кода есть страница (window, document, DOM), а в Node — операционная система (process, fs, сеть). Язык тот же, окружение разное.

В Node нет window и DOM

Браузерный JavaScript живёт рядом со страницей. Там есть глобальный объект window, объект документа document, можно искать элементы и менять их. В Node ничего этого нет — он не отображает страницы.

// В браузере это работает:
document.querySelector("h1").textContent = "Привет";
window.alert("Сообщение");

// В Node такой код упадёт с ошибкой:
// ReferenceError: document is not defined

Если вы попытаетесь обратиться к document или window в Node, получите ReferenceError — этих объектов в среде просто нет.

Зато в Node есть process

Глобальный объект process — это «представитель» текущего процесса операционной системы. Через него доступны переменные окружения, аргументы запуска, версии и управление процессом.

console.log(process.version);      // версия Node, напр. v20.11.1
console.log(process.platform);     // 'darwin', 'win32', 'linux'
console.log(process.argv);         // аргументы командной строки
console.log(process.env.HOME);     // переменные окружения

Этот код не запустится в браузере — там нет process. Зато в Node он покажет информацию о среде, в которой работает программа.

Глобальный объект называется по-разному

ЧтоБраузерNode.js
Глобальный объектwindowglobal
Работа с DOMестьнет
Файловая системанетfs
Процесс ОСнетprocess
Универсальный глобалв обоих есть globalThis

Что общего

Сам язык — один и тот же. Переменные, функции, классы, замыкания, промисы, методы массивов и строк, JSON.parse / JSON.stringify — всё работает одинаково. Поэтому чистую логику легко переносить между фронтендом и бэкендом.

const order = { id: 7, items: ["книга", "ручка"], total: 540 };

const json = JSON.stringify(order);
console.log("Строка JSON:", json);

const parsed = JSON.parse(json);
console.log("Снова объект, товаров:", parsed.items.length);

Вывод:

Строка JSON: {"id":7,"items":["книга","ручка"],"total":540}
Снова объект, товаров: 2

Этот код одинаково работает и в Node, и в браузере — он не зависит от среды.

setTimeout есть в обоих, но это не часть языка

Интересный нюанс: setTimeout, setInterval, console есть и там, и там, но это не часть языка JavaScript — их предоставляет среда. Браузер и Node реализуют их сами, просто с похожим API.

Итог

  • В Node нет window, document и DOM — он не работает со страницами.
  • В Node есть process (процесс ОС), fs (файлы), сеть.
  • Глобальный объект в браузере — window, в Node — global; общий — globalThis.
  • Чистая логика (массивы, объекты, JSON, промисы) работает в обеих средах одинаково.
Проверьте себя
1. Какого объекта НЕТ в Node.js?
Aprocess
Bglobal
Cdocument
Dconsole
2. Через какой объект в Node получают доступ к переменным окружения и аргументам запуска?
Awindow
Bprocess
Cdocument
Dnavigator
3. Как называется глобальный объект в Node (аналог window в браузере)?
Aroot
Bglobal
Cself
Dcontext
Поддержать проект