NodeJS — это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, которая помогает запускать JavaScript вне браузера. Его можно использовать для создания широкого спектра программного обеспечения, включая внутренние серверы, сценарии, инструменты командной строки, игры, нативные приложения и т. д. NodeJS является однопоточным, мы используем его в основном для неблокирующих серверов, управляемых событиями. Он построен на V8, движке JavaScript, созданном Google. V8 также используется для запуска JavaScript внутри консоли Google Chrome.
Да, и NodeJS, и Chrome используют один и тот же движок V8 для выполнения JavaScript. Тем не менее, есть некоторые различия в том, как они выполняются.
Обзор движка V8: V8 — это высокопроизводительный движок JavaScript, написанный на C++ и разработанный Google. Он используется в Chrome и NodeJS. По сути, V8 преобразует код JavaScript в машинный код, который может выполняться компьютером.
Модель двигателя V8:
На изображении выше показано, как исходный код преобразуется в машинный код. Этот процесс осуществляется в следующие этапы:
- Исходный код передается в движок.
- Базовый компиляторотвечает за преобразование исходного кода в неоптимизированный байт-код (таким образом, байт-код генерируется быстро и программа быстро запускается).
- Байт-код, созданный на шаге 2, теперь интерпретируется интерпретатороми преобразуется в машинный код, который может выполняться машиной.
- Компилятор оптимизации TurboFanберет байт-код и генерирует оптимизированный машинный код вместо неоптимизированного машинного кода. Это помогает создавать эффективный и быстрый машинный код. Со временем байт-код полностью оптимизируется компилятором TurboFan, и этот процесс выполняется в фоновом режиме, не нарушая базовый компилятор и интерпретатор.
Чем среда выполнения NodeJS V8 отличается от консоли Chrome?
Судя по всему, и NodeJS, и консоль Chrome за кулисами используют один и тот же движок JavaScript V8. NodeJS был создан для того, чтобы исполняемый код JavaScript выполнялся на локальном компьютере без использования браузера. Оба они следуют одному и тому же процессу выполнения, как описано выше.
Однако, поскольку обе среды различаются, есть некоторые различия в JavaScript, работающем в Chrome и NodeJS.
- Доступ к системе:NodeJS работает на машине, поэтому он имеет полный доступ к операционной системе, что означает, что он может читать, записывать данные в файлы напрямую и выполнять многие другие действия. NodeJS также можно использовать для создания настольных приложений с использованием фреймворка, такого как electronic.js. Консоль Chrome имеет ограниченный доступ к системе, поскольку она работает внутри браузера. Он не может выполнять действия так же, как это делает Node.
- Модульная система:в NodeJS все хранится в модулях, и данные передаются между файлами с помощью модулей. Однако для Chrome это не обязательно.
- Отсутствующие объекты в обеих экосистемах:NodeJS не имеет объектов документа, окна или местоположения, потому что у него нет окна или DOM для работы. Точно так же Chrome также не имеет доступа к глобальному объекту и модулям, таким как fs, path и т. д.
- Графический интерфейс против безголового:у Chrome есть графический интерфейс для работы, а NodeJS безголовый.