Введение в Node.js

ПОЛНОЕ РУКОВОДСТВО

В этой статье мы попытаемся ответить на некоторые вопросы, касающиеся Node.js.

  • Что такое Node.js?
  • Почему Node.js?
  • Когда использовать Node.js?
  • Когда не следует использовать Node.js?

Что такое Node.js?

Node.js — это среда выполнения JavaScript, построенная на «движке Chrome V8 JavaScript

По сути, это программа на C++, в которую встроен движок Chrome V8, самый быстрый движок JS в мире.

Что такое время выполнения?

Время выполнения — это система, используемая в основном при разработке программного обеспечения для описания периода времени, в течение которого выполняется программа.

В каждом браузере есть механизм Javascript, который берет код JavaScript и преобразует его в код, понятный компьютеру.

Почему Node.js?

Так зачем нам нужен Node.js и почему мы не используем просто ванильный Javascript (или обычный Javascript)? Потому что Vanilla Javascript никогда не работал вне браузера, то есть он был создан только для клиентской части, а не для серверной.

Итак, в 2009 году Райан Даль создал Node. Он взял хромированный движок V8 для запуска кода вне браузера.

(Существуют и другие механизмы выполнения javascript, такие как Chakra (Edge) и Spider Monkey (Firefox), но Chrome V8 — самый быстрый.)

Что делает Node.js таким популярным?

  • Однопоточный цикл, управляемый событиями
  • Неблокирующая модель ввода/вывода

Давайте изучим их немного подробнее.

Однопоточный, управляемый событиями:

Что мы подразумеваем под однопоточным? Что мы подразумеваем под потоком?

Говоря простым языком, поток — это легкая задача. На языке программирования это наименьшая последовательность запрограммированных инструкций.

Итак, теперь давайте посмотрим, как работает этот однопоточный цикл, управляемый событиями:

  1. Клиент отправляет запрос на сервер.
  2. Сервер Node.js получает этот запрос и помещает его в очередь, известную как Очередь событий. Он получает запросы по бесконечному циклу и обрабатывает их.
  3. Цикл событий использует только один поток.
  4. Цикл событий проверяет любой запрос клиента, присутствующий в очереди событий, что приводит к двум возможностям:

а) Нет запроса: если запрос отсутствует, то он ожидает входящего запроса бесконечно.

б) Если запрос присутствует, то:

i) Он обрабатывает запрос из очереди событий.

ii) Если запрос не требует каких-либо блокирующих операций ввода-вывода, то он обрабатывает весь запрос и возвращает ответ.

iii) Если запрос требует некоторых блокирующих операций ввода-вывода, таких как взаимодействие с файловой системой или базой данных, тогда следует следующий подход:

  • Проверяет доступность потоков из внутреннего пула потоков.
  • Выбирается один из доступных потоков, и запрос клиента назначается этому потоку.
  • Этот поток принимает запрос, обрабатывает его, выполняет операции блокировки и отправляет ответ в цикл событий, который затем отправляет его клиенту.

Преимущества однопоточного цикла:

  1. Все больше и больше одновременных запросов могут быть легко обработаны.
  2. Меньше потоков означает меньшее использование памяти и других ресурсов.

Модель неблокирующего ввода-вывода:

В отличие от javascript, Node.js является асинхронным, что обеспечивает неблокирующее выполнение кода. Асинхронный код выполняется без какой-либо зависимости и порядка. Таким образом, неблокирующий код не препятствует выполнению фрагмента кода.

Другие преимущества Node.js:

  1. Высокая масштабируемость и скорость.
  2. Node Package Manager или NPM: это менеджер пакетов для Node. Пакет содержит все файлы, которые нам нужны для модуля (библиотеки javascript, которые можно включить в проект). На https://www.npmjs.com/ размещены тысячи пакетов с открытым исходным кодом, доступных для всех бесплатно.

Когда использовать Node.js?

  • Он идеально подходит для создания сверхбыстрых и масштабируемых приложений, интенсивно использующих данные.
  • Может использоваться для потоковой передачи данных.
  • Приложение для чата в реальном времени.
  • Серверное веб-приложение.

Когда не следует использовать Node.js?

  • Node.jsне подходит для приложений с интенсивной обработкой на стороне сервера, т. е. для приложений с интенсивным использованием ЦП. Например, генерация аудио и видео — это некоторые из одновременных запросов, которые не могут быть правильно обработаны Node.js.
  • Для таких случаев нам нужно использовать Python, Ruby on rails или PHP.

Некоторая важная информация о Node:

  • Node не является языком программирования.
  • Node не является фреймворком. Это среда выполнения для выполнения кода Javascript.

Некоторые компании, которые используют или когда-то использовали Node:

  • Нетфликс
  • Убер
  • PayPal
  • eBay