Включите исполнение JavaScript в браузере, чтобы запустить приложение.

Руководство Node.js для начинающих

15 сен 2024
Мы подготовили подробное руководство по Node.js для начинающих. Разберем, что такое Node.js и зачем его использовать во front и back-end разработке, как и какую версию установить и зачем нужен менеджер пакетов npm.

Руководство Node.js для начинающих

JavaScript считается одним из самых простых языков программирования, доступных начинающим разработчикам. Это главный язык фронтенда, на нем работают интерактивные элементы сайтов: кнопки, счетчики, формы пользовательского ввода и анимированные объекты. Писать JS-код можно прямо в браузере, вставляя фрагменты и скрипты в HTML-разметку сайта.

Традиционное использование JavaScript ограничено браузером. Однако серверную часть сайтов и веб-приложений тоже можно делать на JS, только для этого нужен отдельный инструмент — Node.js.

Что такое Node.js

Это среда выполнения JavaScript, которая позволяет запускать JS-код вне браузера на стороне сервера. В основе решения лежит движок Chrome V8 от Google, который обычно используется в браузере Google Chrome для интерпретации JavaScript.

Node.js работает на C++, совместим с MacOS, Windows, Ubuntu и другими операционными системами. Программа получает входящий JS-код и выполняет его, а с помощью собственного интерфейса взаимодействует с устройствами ввода-вывода на компьютере.

Платформа вышла в 2009 году, ее создатель — американский программист Райан Дал. Решение относится к open-source software, то есть программному обеспечению со свободным исходным кодом. В развитии проекта участвуют тысячи разработчиков — его экосистема постоянно пополняется новыми решениями, пакетами и библиотеками.

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

  • типов данных;
  • объектов;
  • функций;
  • переменных;
  • условных операторов;
  • циклов;
  • массивов.

Если вы знакомы с основами использования браузерного JS, то наше руководство Node.js для новичков поможет вам перейти к изучению JS для сервера.

Основные преимущества при работе Node.js

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

Скорость

Высокая производительность — одно из главных преимуществ перед Python, C, Java, Ruby и другими компилируемыми и интерпретируемыми языками программирования. Использование open-source движка V8 открывает Node.js доступ к самым последним наработкам тысяч инженеров в области быстродействия и оптимизации процессов обработки данных.

Асинхронность

Приложение способно обслуживать тысячи одновременных обращений без ущерба скорости и стабильности работы. Асинхронная модель обработки запросов позволяет эффективно управлять операциями ввода-вывода (I/O). Node.js может выполнять сложные запросы без блокировки выполнения JS-кода. При получении команды система инициирует ее выполнение и сразу возвращается к другим задачам, не приостанавливая весь поток на время ожидания результата. После возвращения ответа о выполнении программа отображает результат или исполняет соответствующую команду с сохранением высокой производительности.

Менеджер приложений npm

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

Универсальность

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

  • скриптов и простых утилит для консоли;
  • многофункциональных HTTP-серверов;
  • SSR для React;
  • приложений Real Time Applications, реагирующих на действия пользователя в реальном времени;
  • микросервисов;
  • интерактивных игр;
  • социальных сетей;
  • стриминговых сервисов, чатов и других решений с потоковой передачей данных;
  • инструментов интеграции и мониторинга устройств в IoT.

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

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

Интеграция с редакторами кода и IDE

Установить Node.js можно в Microsoft Visual Studio Code, бесплатную IDE Brackets, WebStorm  — коммерческую IDE, заточенную под JavaScript. Можно писать код в Atom, Sublime Text, Vim, Notepad++  и многих других текстовых редакторах.

Хранить проекты и историю их создания, отслеживать версионность, пользоваться инструментами командной разработки можно на GitVerse — российской платформе для работы с исходным кодом. Для обучения программированию и поиска решений на GitVerse можно смотреть публичные репозитории других пользователей, а для ускорения процесса написания кода — использовать встроенный AI-ассистент GigaCode.

Код JavaScript

Node.js позволяет выполнять JS-код с той же структурой и логикой, что и в браузерном языке. Это открывает широкие возможности разработчикам: можно использовать один язык и для клиентской части, и в бэкенде.

Нужно ли использовать Node.js для работы с фронтендом

Благодаря Node, клиентская и серверная части могут работать на одном и том же языке программирования, поэтому платформу используют и fronted-, и backend-разработчики. Разница — в API, которые использует JavaScript в браузере и на стороне бэкенда.

Руководство по установке Node.js

Развернуть платформу можно через установочный файл с официального сайта, пакетный менеджер или nvm. Если ранее вы уже работали с Node на своем компьютере, перед установкой удалите старое ПО, чтобы не возникло конфликтов версий, или запустите обновление.

Какую версию выбрать

Список версий на официальном сайте постоянно обновляется, доступны варианты с LTS — Long-Term Support, или Current. Выпуски LTS более стабильны и имеют долговременную поддержку, риски возникновения проблем с ними минимальны. Поэтому, если для изучения принципов разработки или реализации идеи вам не требуется конкретная версия ПО, лучше выбрать установку последней LTS.

Официальный установщик

Пакет установки ПО можно загрузить на сайте разработчика nodejs.org в разделе Download. В каталоге Prebuilt Installer выберите операционную систему, номер выпуска с LTS или Current, скачайте и запустите файл, следуя подсказкам системы.

Пакетный менеджер

Алгоритм установки через менеджера пакетов зависит от операционной системы. Например, в OS X нужно установить Homebrew и выполнить в CLI команду brew install node. Информацию о работе с пакетными менеджерами для разных ОС можно посмотреть на сайте nodejs.org в каталоге Package Manager раздела Download.

Диспетчер nvm

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

Тестовый запуск

После установки нужно проверить работоспособность системы. Чтобы убедиться в корректности загрузки ПО в Windows, в консоли вводим node и получаем ответ о готовности к работе.

https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/image92607cfefde28b18b0a7f232c35260adc2e16695.png

В терминале Ubuntu, MacOS, WSL Subsystem for Linux можно ввести node -v и получить сообщение с номером установленной версии.

Настройка редактора кода

Порядок действий зависит от программного решения, который вы выбрали для работы с кодом. Для примера разберем гайд с сайта VSCode:

  • в командной строке создаем новый каталог с помощью команды mkdir HelloNode, после чего вводим каталог: cd HelloNode;
  • создаем app.js с переменной msg в echo var msg > app.js;
  • открываем каталог и app.js в VSCode с помощью code;
  • добавляем строковую переменную, например, «HELLO WORLD» и отправляем строку в консоль путем ввода в app.js.

Пример кода:

var msg = 'HELLO WORLD';

console.log(msg);

После этого нужно запустить app.js:

  • открываем терминал Visual Studio Code;
  • выбираем View > Terminal;
  • задаем терминал по умолчанию в раскрывающемся меню.

Для проверки правильности настройки в терминале запускаем node app.js и получаем выходную строку «HELLO WORLD».

Первая программа на Node.js

Начнем изучение платформы с выполнения простой задачи: создадим и запустим HTTP-сервер, который в качестве ответа будет выводить «HELLO WORLD». При создании приложений на Node.js можно пользоваться большинством стандартных конструкций JS.

Так выглядит команда вывода в консоль текста «HELLO WORLD»:

https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/imagece87857e5b61c7a7deffa4f4a7096faa036cb592.png

<no> alt=«Код JavaScript» </no>

Как видим, синтаксис аналогичен JavaScript.

Алгоритм разработки приложения состоит из четырех шагов:

  • создание каталога на жестком диске;
  • создание в каталоге файла .js с кодом программы;
  • запуск сервера в терминале или командной строке;
  • проверка работы программы в браузере.

Создадим на диске С каталог C:\node, в нем файл app.js со следующим кодом:

  1. const http = require("http");
  2. http.createServer(function(request,response){
  3.  
  4.          response.end("HELLO WORLD ");
  5.  
  6. }).listen(3000, "127.0.0.1",function(){
  7.     console.log("Server running at port 3000");
  8. });

Разберем фрагменты этого кода:

СтрокиФрагмент кодаОписание
1const http = require("http");Создание сервера: получаем модуль http, применяем функцию require() для его загрузки
2 – 4http.createServer(function(request,response){         response.end("HELLO WORLD ");     Метод createServer() из http создает новый HTTP-сервер для обработки входящих подключений и запросовПараметр request хранит данные о запросеПараметр response хранит ответМетод response.end() отправляет ответ
6}).listen(3000, "127.0.0.1",function(){Метод listen запускает прослушивание входящих подключений по заданным параметрамПараметры 3000 и 127.0.0.1 указывают на порт и адресПараметр function() задает функцию, которая запускается при старте прослушивания подключений
7    console.log("Server running at port 3000");Вывод в консоль сообщения о старте прослушивания подключений. Запуск по параметру function()

После сохранения app.js открываем командную строку или терминал. Переходим к каталогу на диске C:

cd C:\node

Запускаем сервер следующей командой:

node app.js

После запуска получаем ответ, заданный в коде. В нашем примере — сообщение «Server running at port 3000».

https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/imageaf21b893fce3211bd1a51970b8c966a1e4366846.png

Если открыть в браузере сайт с указанным адресом и портом, в нашем случае — 127.0.0.1 и 3000 соответственно, система выведет текст «HELLO WORLD» заданный методом response.end().

https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/image1d35bc75aecee7b17d765d72cb1bc36a67b5ff7c.png

Работа с менеджером пакетов npm

Node Package Manager предоставляет доступ к репозиториям с JS-пакетами, библиотеками и модулями. С помощью этого инструмента можно работать с пакетами через консоль:

ОперацияКоманда после npm
Установка всех зависимостейinstall
Установка отдельного пакетаinstall <package-name>
Список установленных пакетовlist --depth=0 
Автоматическая проверка новых версий и обновление всех пакетовupdate
Обновление отдельного пакетаupdate <package-name>
Список установленных пакетов, требующих обновленияoutdated --depth=0
Запуск скриптов<task-name>
Удаление пакетаuninstall <package-name>

Для загрузки пакетов используется npm.

Пакеты можно установить локально или глобально в директорию, адрес которой выводит npm root -g.

npm list выводит список локально установленных пакетов. Та же команда с опцией –global выводит список глобально установленных пакетов.

Чтобы использовать установленные модули, нужно провести операцию импорта с помощью require:

const _ = require('module-name')

npm -h выводит список всех доступных команд пакетного менеджера. Ниже показана часть списка в консоли.

https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/image803920fffab927b614de65c2e24746e64dce329c.png

Основные команды для работы с Node.js

Несмотря на использование одного и того же языка, работа с платформой Node.js отличается от браузерного программирования экосистемой клиентской и серверной сред. В браузере большая часть операций проводится с document, window и другими объектами. В серверном JS этого нет, зато есть модули для взаимодействия с приложением — например, API для доступа к базе данных или файловой системе, а также package.json. Это конфигурационный файл с названием, описанием и другими метаданными, списками зависимостей и скриптами, которые вызывают другие команды консоли.

Команда node -h выводит гайд со списком всех доступных команд. Ниже показана часть списка в консоли.

https://gv01-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/imageb2226fb2cf00e32bc35d150ce214c6ac1140742f.png

Разберем несколько полезных команд, которые часто нужны при изучении платформы.

Команда Node.jsОписание
node -v, --versionВыводит номер текущей версии
node <filename>Выполняет JS-код, сохраненный в документе <filename>
npm runВыполняет пользовательские скрипты, определенные в package.json
console.log()Выводит сообщение, может принимать несколько аргументов, разделенных запятыми
process.exit()Мгновенно прерывает все процессы

Команда process.exit() является грубым решением программной остановки работы приложения. Чтобы избежать потери данных и корректно завершить открытые соединения, можно использовать другой подход: дождаться выполнения всех асинхронных операций и только после этого осуществлять выход. Для решения этой задачи подходят callback-функции, объекты Promise и другие средства JS. Также Node.js позволяет перехватывать сигналы завершения от менеджеров процессов SIGKILL, SIGTERM и выполнять нужные действия перед остановкой приложения. Это позволяет закончить работу более плавно и безопасно, например, предварительно закрывая соединения и сохраняя данные.

Как обновить Node.js

Для обновления ПО используется утилита nvm — Node Version Manager. Для ее установки нужно запустить curl или wget:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

Чтобы обновить Node.js до последней версии, используем nvm install node.

Чтобы загрузить конкретный выпуск, используем nvm install <v-number>, к примеру, nvm install 19.9.0. Если указанное обновление установлено ранее, ПО не переустанавливается.