Skip to content

Различия между Node.js и браузером

И браузер, и Node.js используют JavaScript в качестве языка программирования. Создание приложений, работающих в браузере, совершенно отличается от создания приложения Node.js. Несмотря на то, что это всегда JavaScript, есть ключевые различия, которые радикально меняют опыт разработки.

С точки зрения фронтенд-разработчика, интенсивно использующего JavaScript, приложения Node.js предоставляют огромное преимущество: удобство программирования всего — и фронтенда, и бэкенда — на одном языке.

У вас есть огромная возможность, потому что мы знаем, как сложно полностью, глубоко изучить язык программирования, и используя один и тот же язык для выполнения всей вашей работы в Интернете — как на клиенте, так и на сервере, вы находитесь в уникальном выгодном положении.

TIP

Меняется экосистема.

В браузере большую часть времени вы взаимодействуете с DOM или другими API веб-платформы, такими как Cookies. В Node.js их, конечно же, нет. У вас нет document, window и всех других объектов, предоставляемых браузером.

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

Ещё одно большое различие заключается в том, что в Node.js вы контролируете среду. Если вы не создаёте приложение с открытым исходным кодом, которое может развернуть кто угодно, вы знаете, на какой версии Node.js будет запущено ваше приложение. По сравнению со средой браузера, где у вас нет возможности выбирать, какой браузер будут использовать ваши посетители, это очень удобно.

Это означает, что вы можете писать весь современный JavaScript ES2015+, который поддерживает ваша версия Node.js. Поскольку JavaScript развивается очень быстро, а браузеры могут обновляться довольно медленно, иногда в вебе вы вынуждены использовать более старые версии JavaScript/ECMAScript. Вы можете использовать Babel для преобразования вашего кода в совместимый с ES5, прежде чем отправлять его в браузер, но в Node.js вам это не понадобится.

Ещё одно различие заключается в том, что Node.js поддерживает как системы модулей CommonJS, так и ES (начиная с Node.js v12), тогда как в браузере мы начинаем видеть реализацию стандарта ES Modules.

На практике это означает, что вы можете использовать как require(), так и import в Node.js, тогда как в браузере вы ограничены import.