Facebook Twitter Google Plus

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

Node.js - это среда выполнения приложений, которая позволяет писать серверные приложения, построенные на движке Chrome V8 JavaScript. Он отлично подходит для масштабируемых ситуаций в реальном времени, которые мы все больше требуем от наших серверов. Он использует управляемую событиями, неблокирующую модель ввода-вывода, что делает его легким и эффективным, а его способность использовать JavaScript как во внешнем, так и в серверном интерфейсе дает преимущество для разработки. Экосистема пакетов Node.js, npm, является крупнейшей в мире экосистемой библиотек с открытым исходным кодом. Многие крупные компании внедрили Node.js в производственную среду. В этой статье я хочу обсудить, почему использовать node.js для разработки и в каких случаях это может быть не лучшей идеей.

Почему стоит выбрать Node.js для веб-разработки

Есть две важные вещи, которые отличают разработку на Node.js от существующих серверных фреймворков - это использование JavaScript в качестве языка программирования и асинхронные события.

JavaScript

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

Асинхронные события

В то время как большинство существующих серверных фреймворков используют асинхронную архитектуру, Node.js использует асинхронную архитектуру, с которой JavaScript хорошо справляется. Это означает, что сервер реагирует на события и отправляет события (сообщения), например, база данных. Этот стиль программирования сильно отличается от синхронного стиля и может быть трудным для использования с другими языками. Node.js использует асинхронный стиль с асинхронным вводом-выводом и может хорошо масштабироваться.

Архитектура, управляемая событиями

Это семейство стилей, которые позволяют компонентам обмениваться данными посредством асинхронных сообщений. Системы, основанные на стилях, основанных на событиях, часто организованы как слабосвязанная федерация компонентов, которые запускают поведение других компонентов посредством событий.

Существуют различные стили событий, например:

  • Точка-точка
  • Публикация-Подписка

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

Веб-приложения в реальном времени? Нет проблем !!

RTA - это прикладная программа, которая функционирует в пределах временного интервала, который пользователь воспринимает как немедленный или текущий. Задержка должна быть меньше определенного значения, обычно измеряемого в секундах. Использование RTA в ваших приложениях называется вычислениями в реальном времени (RTC).

  • Быстрый и масштабируемый: вы можете использовать его для создания сетевых приложений, поскольку выполнение JavaScript выполняется быстро. Однопоточная модель с циклом событий очень полезна и позволяет обрабатывать несколько клиентских запросов. Это одно из главных преимуществ использования Node.js для разработки веб-приложений.
  • Совместное использование и повторное использование. Совместное использование пакетов библиотечного кода - это нормально. Если разработчик сталкивается с какой-либо проблемой, диспетчер пакетов узлов (NPM) с его репозиторием из более чем 50 000 пакетов помогает разработчику с решениями. Теперь обновление, совместное использование и повторное использование кода стало намного проще.
  • Потоки в Node.js: поскольку Node.js управляется событиями, решение задач, связанных с вводом-выводом, очень хорошо. Потоки представляют собой каналы UNIX, которые позволяют легко читать данные из источника и передавать их в пункт назначения.
  • Синхронизация данных между клиентом и сервером: передача данных между клиентом и сервером происходит быстро, поскольку Node.js позволяет писать JavaScript как на стороне клиента, так и на стороне сервера.
  • Сервер на основе событий. Сервер на основе событий и без блокировки лучше всего подходит, если веб-приложения могут обрабатывать большое количество пользователей в реальном времени.
  • Различные модули: важна доступность ввода-вывода файловой системы, сетевых двоичных данных, потоков данных и других функций. Модули Node.js используют API, предназначенный для упрощения написания сервера.
  • Приложения. Эти приложения могут работать на серверах MacOS, Microsoft Windows, NonStop и UNIX.
  • Отличия от PHP: Node.js в основном используется для создания сетевых программ, таких как веб-серверы. Самая большая разница между Node.js и PHP заключается в том, что большинство функций в блоке PHP до завершения, а
  • Функции в Node.js. Функции в node.js разработаны так, чтобы не блокировать. Node.js перенес на веб-серверы программирование, управляемое событиями. Сообщество веб-дизайнеров-фрилансеров уже давно использует Node.js.
  • Поддержка C и C ++: Node.js поддерживает C и C ++ для ускорения обработки. Надстройки Node.js - это динамически связанные общие объекты, написанные на C ++, которые можно загрузить в Node.js с помощью функции require () и использовать так же, как если бы они были обычным модулем Node.js. Node.js в основном используется для обеспечения интерфейса между JavaScript, работающим в Node.js, и библиотеками C / C ++. Узел отправляет запрос процессору, но процессор извлекает запрос один за другим, поэтому запрос от узла должен ждать, пока процессор завершит работу. существующий процесс и получить следующий запрос, но используя c и c ++.

Диспетчер пакетов NPM:

Основное преимущество, с точки зрения разработчика, простое: локальная установка пакета.

  • npm позволяет выбирать между глобальной и локальной установкой (по умолчанию используется локальная). При локальной установке пакеты устанавливаются в каталог под названием `npm_modules` внутри текущего (то есть вашего приложения) каталога. Node автоматически делает все локально установленные пакеты доступными для работающего приложения, поэтому нет конфликтов с пакетами других приложений.
  • Если у пакета npm есть другие зависимости, они устанавливаются в каталог этого пакета, а НЕ в общий каталог. Т.е. если моему проекту требуются пакеты A и B, и оба из них требуют несовместимых версий пакета C, каждый из них получит свою собственную копию, которая является локальной для них. Больше никаких конфликтов зависимостей!
  • вы можете просто скопировать и вставить файлы проекта и установить зависимости в другой системе с помощью npm. Нет необходимости копировать все файлы проекта, такие как node_modules или какие-либо другие.
  • Если пакет предоставляет инструменты командной строки, его все равно можно установить в масштабе всей системы с помощью флага «-g».

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

Когда потоковая передача данных - это реальная проблема

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

Подводя итог, Node.js - это кроссплатформенная среда выполнения JavaScript для серверов и приложений. Он построен на однопоточном неблокирующем цикле событий, движке Google Chrome V8 JavaScript и низкоуровневом API ввода-вывода. Различные методы, включая модуль кластера, позволяют приложениям Node.js масштабироваться за пределы одного ядра ЦП. Помимо своей основной функциональности, Node.js вдохновил экосистему из полумиллиона пакетов, которые зарегистрированы и имеют версии в репозитории NPM и могут быть установлены с помощью командной строки NPM.

также ознакомьтесь с нашей статьей 6 способов сделать ваше веб-приложение Node JS быстрее

Поделиться этой статьей

Facebook Twitter Google Plus

Первоначально опубликовано на www.angularminds.com 12 сентября 2017 г.