Программная платформа Node.js

Развивающаяся популярная платформа единого языка - реальность или миф? Основные отличия и преимущества Node.js перед другими технологиями, а также освещение сферы применения


Создание любого проекта начинается с выбора инструментов разработки и от грамотного выбора зависит огромная доля успеха конечного продукта. На данный момент оптимальный выбор средств для разработки большинства веб-приложении это, как правило, связка серверного языка программирования PHP c популярным веб-сервером Apache в серверной среде. Еще могут встречаться альтернативы, как например, веб-сервер на основе Nginx и PHP-FPM, который является отличным примером по производительности, Nginx отдает статику, а в качестве внутреннего сервера по обработке и генерированию выступает PHP-FPM.

Введение

Как вы можете заметить, количество языков, технологии и их прикладных разделов достаточно велико. С их помощью можно создать как обычную личную страницу Васи Пупкина в интернете, так и очень сложный, высоконагруженный проект, который способен обслуживать множество клиентов в единицу времени. Это могут быть различные социальные сети, CRM, крупные интернет-магазины, порталы, взаимодействующие с другими сложными системами и т.д. Любой веб-мастер знает это и начинающий разработчик окунается в эти технологии и языки с головой, начиная с HTML, CSS, JavaScript, PHP. Стоит отметить, что каждый из них достоин целого учебника и не одного, а чтобы начать что то создавать самому (имеется ввиду профессионально), то нужно изучать и практиковать эти языки постоянно и параллельно. После изучения основ и принципов каждого языка, а в особенности JavaScript в углубленном режиме, веб-разработчик уже может приступить, как бонус, к изучению Node.js и стать еще более закаленным профи в области веб-технологии, и сейчас мы как раз об этом поговорим.

Почему выбирают Node.js?

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

Node.js сравнительно молодой проект: разработчики узнали о выходе идейно новой технологии разработки веб-ресурсов в 2009 году. С тех пор платформа разрослась и достаточно комфортно используется многими программистами по всему миру. Чем определена популярность Node.js?

Первое и самое полезное свойство платформы, особенно для новичков – простота и доступность. Для реализации собственных проектов вам не придется вручную по крупицам собирать библиотеки, пакеты, информацию о данном продукте. Установка занимает считанные минуты, после которых Node уже готов к работе. Скачать базовый комплект для установки можно на официальном сайте платформы http://nodejs.org/ или в среде linux http://nodejs.org/en/download/package-manager/

Структурно Node.js представляет собой объединение движка (V8), средств ввода-вывода(I/O) и набора библиотек. При этом разработка компонентов приложения или сайта ведется на одном языке программирования – JavaScript! Вам не потребуется изучение дополнительных ресурсов или привлечение специалиста другого языка, достаточно обладать хорошими навыками программирования на JS, изучение которого, в свою очередь, не затруднительно, если вы будете внимательно подходить к изучению этого гибкого языка. Как итог – сервер и клиент написаны на одном языке.

nodejs

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

Еще одно преимущество данной платформы – разработана для всех типов ОС. Установка Node.js одинаково проста и на Mac, и на Windows, и на Unix системах. Тем самым укрепляется доступность и стабильность данного продукта.

Углубимся в суть платформы. Ранее был упомянут движок V8. На данный момент это одна из самых производительных программ для JS. Благодаря ей код выполняется в разы быстрее. V8 эффективно управляет памятью:

  • Прерывания для сборки мусора
  • Минимизация влияния этих прерываний на время выполнения кода
  • Оптимальное хранение указателей и объектов, как следствие – ликвидация проблемы потери памяти
  • Быстрый доступ к информации

Тандем из V8 и набора библиотек Node.js реализует асинхронное API по работе с сетевыми ресурсами. Теперь сервер не подвисает в ожидании ответа для запроса определенного процесса, например, от базы данных, а продолжает работу с другими запросами, пока данный находится в процессе выполнения. Это достаточно большой шаг для интерактивных систем, где важна скорость ответа на определенные действия на клиенте.

nodejs-1

Итог:

  • Легко работать
  • Прототип
  • Интерактивная разработка
  • Легко выстраивать архитектуру (готовые пакеты)

Пример работы на простой схеме

Перейдем к описанию преимуществ непосредственно самой работы. На подготовительном этапе, который следует за установкой, разработчик орудует уже готовым прототипом программы. Ее уже можно запустить и она будет работать. Далее предстоит знакомство с непременным атрибутом Node.js – модульностью. Единицами модульности платформы являются файлы, в отличие от пакетов и классов в глобальном языке программирования Java.

Общение между модулями организуется при помощи функции require(). Через нее подгружаются и стандартные библиотеки, например http, и созданные разработчиком файлы Node.js.

//стандартный модуль http
var http = require('http');

Или

var hello = require('./hello');
hello.world();

Отличная организация сообщества позволяет в одном и том же фреймворке работать с 20-80 готовыми модулями. На данный момент в разработке и применении находится около 250 000 пакетов, такого количества модулей нет ни у одной платформы.

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

Вы также можете не только использовать готовые модули, но и добавлять свои. Для этого к каждому своему модулю необходимо прикрепить описание package.json с основными атрибутами name и version, остальное по требованию. Публикуем свой модуль в npm, чтобы другие участники могли им пользоваться.

Применение событийно-ориентированной технологии

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

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

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



Похожие заметки:

Немного про Gulp

Краткий экскурс в таск раннер Gulp

Открыть здесь

Удобная разработка с livereload, установка browser-sync

Livereload — «живая» перезагрузка страниц в браузере, при изменении в файлах проекта. Обычно очень удобно при разработке нового проекта, когда постоянно вносятся и тестируются изменения, особенно если дебажим во многих вкладках и браузерах сразу

Открыть здесь


В этой заметке комментарии закрыты.