На этой странице

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

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

    Это большая возможность, ведь мы знаем, как трудно по-настоящему, глубоко выучить язык программирования, — и, используя один и тот же язык для всей работы в вебе (и на клиенте, и на сервере), вы оказываетесь в уникально выигрышном положении.

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

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

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

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

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

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

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