Руководство по Node.js для новичков
Каждые несколько лет браузер с HTML5 изменяется — это совершенно нормально. Важно выбрать подходящие инструменты.
Иллюстрация: Оля Ежак для Skillbox Media
Чтобы создавать приложения на HTML5, нужно постоянно осваивать новые технологии и инструменты. Браузер с HTML5 — очень изменчивая платформа. Каждые несколько лет всё становится с ног на голову, а набор технологий для создания современного приложения изменяется.
Одно из таких «мастхэв-средств» разработки клиентских приложений — Node.js:
- Что это такое
- Как платформа устроена изнутри
- Особенности среды исполнения
- Для чего нужен и где используется
- Как установить и запустить Node.js
- Пишем первую программу
- Платформа как конструктор приложений
Что такое Node.js и почему он появился
Node.js — это среда выполнения JavaScript-программ, построенная на движке Chrome V8. Раньше на JS можно было делать только интерактивные сайты, так как это специализированный браузерный язык программирования. С программной платформой Node.js появилась возможность создавать «безбраузерные» приложения для компьютера. Это значит, что при необходимости на JavaScript теперь можно делать то же, что на Python и других скриптовых языках программирования общего назначения.
Язык JavaScript создавался в середине девяностых компанией Mozilla как простой скриптовый язык программирования, встраиваемый в код HTML-страниц. Как вспоминает его автор Брендан Эйх, разработчики ставили перед собой цель создать «язык для склеивания» составляющих частей веб-ресурса: изображений, плагинов и Java-апплетов, который был бы удобен для веб-дизайнеров и программистов, не обладающих высокой квалификацией. Он создавался для программирования как на стороне клиента, так и на стороне сервера.
Но, как часто бывает, со временем разработчики начали использовать JavaScript совсем иначе, чем было задумано. Самый неправильно понятый в мире язык программирования в итоге стал самым популярным. К настоящему времени он лидирует в качестве средства для разработки веб-приложений на стороне клиента. Это произошло из-за того, что эволюция веба двинулась в сторону интерактивных веб-приложений, хотя Сеть не была изначально предназначена для этого, как не был предназначен и JavaScript. Пришлось приспособиться.
Как платформа устроена изнутри
Для новой роли понадобился новый инструментарий. Постепенно JavaScript оброс целой инфраструктурой фреймворков, библиотек, компиляторов и протоколов. В том числе появилось несколько платформ исполнения серверных и клиентских приложений. Node.js — самая популярная из них. Эту платформу выпустил американский программист Райан Дал в 2009 году.
Программная платформа Node.js работает на движке V8, который транслирует JavaScript в машинный код. Грубо говоря, сама платформа является приложением C++, которое получает на входе JavaScript-код и выполняет его.
В среде исполнения есть собственный интерфейс на C++ для взаимодействия с устройствами ввода-вывода на компьютере. То есть эта платформа фактически превращает JavaScript из специализированного скриптового языка в язык общего назначения. Это означает, что на Node.js вы можете писать любые компьютерные программы.
Событийно-ориентированный подход
Главная особенность Node.js в том, что вместо традиционной модели параллелизма на основе потоков автор выбрал событийно-ориентированный подход. Это такая парадигма программирования, в которой выполнение программ определяется событиями. Например, это действие пользователя, поступление сетевого пакета, сообщение из другой программы и так далее.
Такой подход сильно упрощает программирование некоторых приложений, особенно при реализации удобного интерфейса ввода-вывода (I/O), как у Node.js. По легенде, идея создания пришла автору, когда он увидел полосу загрузки файлов на Flickr, которая не понимала реального процента загрузки файлов, то есть не имела обратной связи от браузера из-за отсутствия событийной привязки.
С распространением в интернете социальных сетей и других интерактивных сайтов резко выросла востребованность Node.js как платформы для приложений, реагирующих на действия пользователя: чатов, игр, инструментов совместной работы — теперь всё это делают на JavaScript с помощью среды исполнения.
Таким образом, Node.js — это событийно-ориентированный I/O-фреймворк на JavaScript. Технические особенности делают приложения на его основе легковесными и эффективными. Этим и объясняется его огромная популярность.
Разработку языка координирует OpenJS Foundation, который финансируется по программе поддержки свободных проектов Linux Foundation. Это свободный распределённый проект, в создании которого на безвозмездной основе участвуют тысячи разработчиков со всего мира.
Для чего нужен и где используется Node.js
Среда исполнения представляет собой платформу для написания JavaScript-приложений с использованием внешних библиотек.
Благодаря Node.js написанный для браузера код JavaScript получает доступ к глобальным объектам, таким как document и window, наряду с другими API и библиотеками. С помощью Node.js код обращается к жёсткому диску, базам данных и Сети. Это делает возможным написание любых приложений: от утилит командной строки и видеоигр до полноценных веб-серверов.
Чаще всего Node.js используется при написании веб-приложений с интенсивным вводом-выводом. Самый распространённый пример — это веб-серверы. Ещё платформу используют для создания приложений реального времени: чатов, коммуникационных программ и игр. Многие приложения имеют и серверную, и клиентскую части.
Пакетный менеджер NPM
Важной частью Node.js является пакетный менеджер NPM — Node Package Manager, который устанавливается вместе с интерпретатором (см. ниже).
Как установить и запустить Node.js
Последнюю версию Node.js можно скачать с официального сайта nodejs.org. Для большинства пользователей рекомендуется установка версии с долговременной поддержкой (LTS). На данный момент это 18.14.2.
Установленная среда исполнения предоставляет две утилиты командной строки: Node и NPM. Первая запускает софт, созданный на JavaScript.
Пишем первую программу на Node.js
Напишем простую программу на JavaScript, которая выводит в консоль текст:
Сохраним её в файл skillbox.js. Так вот, команда node может выполнить эту программу с JS-кодом:
Команда node выполнила программу skillbox.js — вывела в консоль текст «Skillbox test».
Кроме Node на компьютер устанавливается программа NPM — это система управления пакетами Node, необходимая для установки свободно распространяемых инструментов из Сети. Нам как раз впоследствии понадобятся некоторые из этих инструментов, которые нужно будет скачать после установки NPM. Все программы здесь скачиваются и устанавливаются стандартным путём:
console.log ("Skillbox test");
Получить список доступных пакетов и их краткое описание можно с помощью следующей команды:
npm search
Например, нам понадобится программа browser-sync для запуска примеров кода в браузере и автоматического обновления страницы при сохранении изменений в коде. Инструмент устанавливается такой командой (с параметром -g, который означает «глобальную» установку пакета для выполнения из любого каталога):
npm install -g browser-sync
Node.js как конструктор приложений
Платформа Node.js содержит огромное количество полезных модулей, помогающих при работе с файлами и каталогами, взаимодействии по Сети и обработке событий. Для Node.js выпущено более 650 000 пакетов свободного программного обеспечения, поэтому создание многих приложений похоже на сборку из кубиков конструктора.
Кроме Node и NPM нужно ещё установить редактор кода, если его у вас до сих пор нет. Есть несколько удобных редакторов, в том числе Visual Studio Code от Microsoft, Brackets от Adobe и популярный свободный редактор Atom. Все они бесплатные.