Как я чувствую твою боль!
Как и многим, мне было трудно понять суть Node.js, потому что большинство людей пишут / говорят только о той части Node, которую они находят полезной - а та часть, которую они находят интересной, обычно является вторичной выгодой.узла, а не его основная цель.Я должен сказать, что я думаю, что это безумие, когда люди говорят, что Node - просто среда выполнения JavaScript.Использование JavaScript в Node - и выбор среды выполнения V8 - это просто средство для достижения цели , лучший инструмент для решения проблемы, которую разработчики Node хотели решить.
Основной целью Node былосделать управление пользовательскими событиями в веб-приложении более эффективным.Таким образом, Node в подавляющем большинстве используется в серверной части веб-приложения.Управление событиями требует, чтобы что-то прослушивалось на сервере на этих событиях.Таким образом, http-сервер должен быть настроен для маршрутизации каждого события в соответствующий скрипт-обработчик.Узел использует JavaScript для обработки событий, потому что JavaScript имеет функции обратного вызова: это позволяет приостановить одну задачу до тех пор, пока не будет возвращен результат зависимой задачи.Не многие другие языки имеют эту функцию, и те, которые не имеют такого же эффективного переводчика, как Google V8.Большинство веб-разработчиков знают JavaScript, поэтому нет дополнительного изучения языка с Node.Более того, наличие функций обратного вызова позволяет помещать все пользовательские задачи в один поток без явной блокировки, применяемой к задачам, требующим доступа к базе данных или файловой системе.И это то, что приводит к превосходной эффективности исполнения Node при интенсивном параллельном использовании - что было основной целью его разработки.
Чтобы помочь пользователям Node быстро написать конечный код, разработчики Node также организовали NPM (NodeДиспетчер пакетов) репозитарий: это открытый, управляемый пользователем набор пакетов скриптов для различных стандартных и пользовательских функций.Все проекты Node позволяют импортировать пакеты NPM в проект с помощью установленной команды npm install .
Пользовательские запросы, обрабатываемые через Node, будут такими, как проверка полей регистрации / входа / выхода из системы / формы, и различные запросы к базе данных, необходимые веб-приложению, будут отправляться на порт Node.Другие типы пользовательских запросов, например, для отображения другой веб-страницы, загрузки CSS / JS / изображений и т. Д., Также могут быть отправлены на Node.Но они, как правило, не отправляются на порт Node, а продолжают отправляться браузером на порт (ы) по умолчанию на сервере, где их обрабатывает веб-сервер.
Итак, на практике , Node обычно является сервером, но заменяет только некоторые функций программы веб-сервера.Другие виды использования Node просто используют те или иные его функции, например, двигатель V8.Но на самом деле это просто побочные продукты Node.