Введение в 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 таким популярным?
- Однопоточный цикл, управляемый событиями
- Неблокирующая модель ввода/вывода
Давайте изучим их немного подробнее.
Однопоточный, управляемый событиями:
Что мы подразумеваем под однопоточным? Что мы подразумеваем под потоком?
Говоря простым языком, поток — это легкая задача. На языке программирования это наименьшая последовательность запрограммированных инструкций.
Итак, теперь давайте посмотрим, как работает этот однопоточный цикл, управляемый событиями:
- Клиент отправляет запрос на сервер.
- Сервер Node.js получает этот запрос и помещает его в очередь, известную как Очередь событий. Он получает запросы по бесконечному циклу и обрабатывает их.
- Цикл событий использует только один поток.
- Цикл событий проверяет любой запрос клиента, присутствующий в очереди событий, что приводит к двум возможностям:
а) Нет запроса: если запрос отсутствует, то он ожидает входящего запроса бесконечно.
б) Если запрос присутствует, то:
i) Он обрабатывает запрос из очереди событий.
ii) Если запрос не требует каких-либо блокирующих операций ввода-вывода, то он обрабатывает весь запрос и возвращает ответ.
iii) Если запрос требует некоторых блокирующих операций ввода-вывода, таких как взаимодействие с файловой системой или базой данных, тогда следует следующий подход:
- Проверяет доступность потоков из внутреннего пула потоков.
- Выбирается один из доступных потоков, и запрос клиента назначается этому потоку.
- Этот поток принимает запрос, обрабатывает его, выполняет операции блокировки и отправляет ответ в цикл событий, который затем отправляет его клиенту.
Преимущества однопоточного цикла:
- Все больше и больше одновременных запросов могут быть легко обработаны.
- Меньше потоков означает меньшее использование памяти и других ресурсов.
Модель неблокирующего ввода-вывода:
В отличие от javascript, Node.js является асинхронным, что обеспечивает неблокирующее выполнение кода. Асинхронный код выполняется без какой-либо зависимости и порядка. Таким образом, неблокирующий код не препятствует выполнению фрагмента кода.
Другие преимущества Node.js:
- Высокая масштабируемость и скорость.
- 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