Node.js

Node.js

«Нода» — младшая сестра JavaScript, которая берет на себя большую часть бэкенд разработки. В этой статье мы расскажем откуда она появилась, зачем она нужна и какие у нее перспективы, а также заценим ее «лук» и узнаем, где с ней знакомиться.

Старший брат

JavaScript — это язык программирования, который изначально был создан для работы в браузере. Он позволяет добавлять интерактивность и динамику на веб-страницы, обрабатывать события, взаимодействовать с DOM и отправлять асинхронные запросы на сервер. Но что, если мы хотим использовать JavaScript не только на клиенте, но и на сервере? Для этого существует платформа Node.js, которая позволяет запускать JavaScript-код вне браузера.

Что такое Node.js и как она устроена

Node.js — это среда выполнения JavaScript, построенная на движке V8 от Google, которая:

  • Компилирует и исполняет JavaScript-код, преобразуя его в машинный код, понятный для процессора. Благодаря этому JavaScript работает очень быстро и эффективно.
  • Не только использует движок V8, но и расширяет его функциональность, добавляя различные модули и API для работы с файлами, сетью, базами данных и другими ресурсами.
  • Предоставляет событийный цикл (event loop) — механизм, который позволяет обрабатывать асинхронные операции без блокировки основного потока исполнения. Событийный цикл регистрирует функции-обработчики (callback) для разных событий (например, завершение чтения файла или получение ответа от сервера) и вызывает их по очереди, когда события происходят.

Краткая история

Node.js была создана в 2009 году Райаном Далем (Ryan Dahl), который хотел улучшить возможности серверных приложений того времени. Он заметил, что большинство серверов работали по принципу одновременного обслуживания ограниченного количества соединений, что приводило к низкой производительности и высокому потреблению ресурсов. Райану пришла в голову идея использовать JavaScript на сервере и сделать его асинхронным и неблокирующим, то есть способным обрабатывать множество соединений параллельно без задержек.

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

Node js - для чего нужен?

Подходит для разработки:

  • Приложений: тех, которые работают в режиме реального времени и поддерживают постоянное взаимодействие между клиентом и сервером. Примеры таких приложений – чаты, игры, видео-стриминг, инструменты для коллаборации.
  • Микросервисов: то есть для построения микросервисной архитектуры, которая состоит из множества небольших и независимых сервисов, взаимодействующих между собой. Это обеспечивает высокую масштабируемость, отказоустойчивость и гибкость приложений.
  • API: Node.js  позволяет создавать RESTful API — интерфейсы для обмена данными между приложениями в формате JSON. Платформа также поддерживает GraphQL — язык запросов и схемы для API, который дает больше контроля над получаемыми данными.

Для чего еще используется Node.js?

  • Высоконагруженные и высокопроизводительные веб-сервисы: поисковые системы, социальные сети, облачные платформы.
Примеры: Google, Facebook, Netflix, Amazon.
  • Приложения для интернета вещей: сети из устройств, которые собирают и передают данные через интернет. Node.js позволяет обрабатывать большие объемы данных в реальном времени и взаимодействовать с разными протоколами и API.
Примеры: умный дом, умный город, телемедицина.
  • Образовательные платформы и инструменты: для помощи студентам и преподавателям в изучении и преподавании программирования.

Как установить Node.js на macOS

Основные характеристики

Скорость и производительность. Благодаря движку V8 и событийному циклу платформа способна обрабатывать большое количество запросов с высокой скоростью и низким потреблением ресурсов.

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

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

Кроссплатформенность. Платформа работает на таких операционных системах как Windows, Linux, macOS и даже на микроконтроллерах. Это облегчает развертывание и поддержку приложений на различных устройствах.

Актуальность. «Нода» поддерживает современные стандарты и возможности JavaScript, такие как ECMAScript modules, async/await, promises.

Зачем писать бэкенд на JavaScript, когда есть Python и PHP

Единообразный язык: облегчает разработку и поддержку кода. Fullstack-разработчику не нужно изучать и переключаться между различными языками и средами разработки.

JavaScript-фреймворки: предлагают инструменты и функции для обработки HTTP-запросов, маршрутизации, обработки данных и других задач, связанных с backend-разработкой.

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

Интеграция с фронтендом: вы можете использовать JSON для представления данных и легко манипулировать ими как на клиентской, так и на серверной стороне.

Как выглядит код на Node.js

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

// Подключаем модуль http
const http = require('http');

// Создаем сервер
const server = http.createServer((req, res) => {
  // Отправляем ответ в виде простого текста
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, Node.js!');
});

// Запускаем сервер на порту 3000
server.listen(3000, () => {
  console.log('Server is running on port 3000');
});

Этот код создает сервер, который слушает порт 3000 и отправляет приветственное сообщение каждому, кто обращается к нему. Для того, чтобы запустить этот код, нужно сохранить его в файле с расширением .js (например, server.js) и выполнить команду node server.js в терминале. После этого можно открыть браузер и перейти по адресу http://localhost:3000. Там должно появиться сообщение «Hello, Node.js!».

Фреймворки и вспомогательные инструменты

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

  • Express — это фреймворк, который поддерживает маршрутизацию, обработку ошибок, шаблонизацию, работу с cookies и сессиями, интеграцию с базами данных и другими сервисами. А также он может похвастаться большим сообществом разработчиков и множеством дополнительных модулей и плагинов.
Команда для установки: npm install express --save.
  • Socket.io — это библиотека для работы с веб-сокетами.
Веб-сокеты — это технология, которая позволяет устанавливать двустороннее и постоянное соединение между клиентом и сервером. Это позволяет обмениваться данными в реальном времени без необходимости постоянно отправлять запросы на сервер.

Библиотека поддерживает бинарные данные, мультиплексирование, автоматическое переподключение, обнаружение и исправление ошибок.

Команда для установки: npm install socket.io --save.
  • Koa — это фреймворк, созданный теми же разработчиками, что и Express. Он представляет собой более легковесную и современную альтернативу Express, которая использует новые возможности JavaScript, такие как async/await и генераторы. Koa позволяет создавать эффективные и элегантные веб-приложения и API с минимальным набором функций. Он поддерживает принцип "middleware", позволяющий добавлять различные функции и модули к приложению.
Команда для установки: npm install koa --save.

Популярность и перспективы

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

  • По данным исследования Stack Overflow 2021 — занимает первое место среди фреймворков, библиотек и инструментов, которые используют профессиональные разработчики.
  • По данным сайта NPM Trends — опережает другие серверные платформы, такие как PHP, Python, Ruby и Java, по количеству загрузок за последний год.

А что насчет перспектив?

  • Развитие и улучшение. Этим занимается независимая организация, Node.js Foundation, которая регулярно проводит конференции, вебинары, хакатоны, чтобы обменяться опытом и знаниями о Node.js.
  • Используется компаниями с мировым именем. Google, Microsoft, Netflix, PayPal, Uber, NASA — доверяют «ноде» свои критически важные приложения и сервисы.
  • Востребованность Node.js разработчиков. Отличный выбор для  карьерного роста и профессионального развития. Node.js-разработчики востребованы на рынке труда и получают хорошую зарплату. По данным сайта Indeed, средняя зарплата Node.js-разработчика в США составляет $110 000 в год, а в России —  100-150 тыс. рублей в месяц.

4 места, где можно начать учить Node.js

Официальный сайт — там вы ознакомитесь с документацией, руководством, примерами кода и другой полезной информацией

W3Schools — ресурс, где вы найдете простые и понятные уроки по node js

Learn Node — сайт с мощным практическим курсом по созданию веб-приложений на Node.js и Express.

Эльбрус Буткемп — в рамках онлайн-программы FULLSTACK  JAVASCRIPT мы подробно показываем как работать с Node.js и Express, а также для самых смелых у нас есть офлайн буткемпы в Санкт-Петербурге и Москве.

Софья Пирогова

Софья Пирогова

автор статей / копирайтер
Георгий Бабаян

Георгий Бабаян

Основатель и CEO Эльбрус Буткемп