Возможно, вы много слышали, что Nodejs - это неблокирующий ввод-вывод, управляемый событиями. Что это обозначает? Когда я впервые услышал это, это звучало действительно сбивающе с толку. В конце этого обсуждения вы четко поймете, что означает это утверждение.

Давайте сразу погрузимся в это.

Разобьем заявление на две части. СОБЫТИЕ И НЕБЛОКИРОВАНИЕ ВХОДА / ВЫВОДА

Что такое событийно-ориентированное?

Управляемый событиями означает, что когда вы делаете вызов, ваш сервер узла перехватывает запрос и регистрирует функцию. Повторюсь, Nodejs регистрирует функцию вместо фактических данных. Но почему? Вот почему. Вместо того, чтобы иметь цикл событий для ожидания данных во время выборки (что может занять некоторое время), узел просто регистрирует событие, которое будет вызвано, когда выборка будет завершена, и освобождает цикл событий для принятия следующего запроса.

Что такое неблокирующий ввод-вывод

Node обращается с вашим событийным циклом как с официантом в ресторане. Когда он доставляет ему запрос, он сразу освобождает его. Это означает, что официанту не нужно ждать, пока еда будет готова, чтобы принять следующий заказ. Представьте себе ресторан, где каждого клиента будет обслуживать отдельный официант. Этим будет сложно управлять, и это займет много места, не так ли?

Итак, узел говорит, давайте не будем этого делать. Давайте возьмем одного официанта, как в обычном ресторане, и будем принимать заказы от всех клиентов и обслуживать их, когда их еда будет готова. Один человек мог заказать особую еду, на приготовление которой уйдет целая вечность, а другой мог просто заказать суп или что-нибудь легкое, что заняло бы минуту или две. Итак, последнее не должно блокироваться первым.

Цикл событий похож на официанта: всякий раз, когда делается запрос, узел принимает его и регистрирует функцию обратного вызова (например, говорит, что еда готовится, идите и принимайте другие заказы). Теперь цикл событий освобожден и готов принять следующий запрос, и конечный пользователь чувствует плавный переход между запросами.

Надеюсь, это краткое объяснение поможет.