Чем серверный 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 |
| Глобальный объект | window | global |
| Работа с 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, промисы) работает в обеих средах одинаково.