Почему Node.js — это гуд
medium

Почему Node.js — это гуд

Краткое введение в платформу, на которой JavaScript покоряет мир.

Представьте:

  1. Вы написали простое приложение в браузере — например, анализатор текста или ипотечный калькулятор. Так как всё было в браузере, вы сразу написали всё на JavaScript. Софт работает, приносит пользу.
  2. Со временем вы развиваете проект. Появляются новые функции. Однажды появилась потребность в переносе программы на мощный сервер. Например, вы решили добавить к своему софту интеграцию с Телеграмом, а для этого нужен сервер.
  3. В обычной ситуации вам бы пришлось выбрать какой-нибудь серверный язык и написать свой софт заново — например, на Python или PHP. Но благодаря NodeJS можно скопипастить существующий код, переписав лишь ввод-вывод, и ваша программа продолжит покорять мир.

Это и есть Node.js.

Что такое Node.js

Node.js — это система, которая исполняет JavaScript отдельно от вашего браузера. Можно сказать, что это самостоятельная среда для выполнения JavaScript.

Node.js можно установить на сервер (так же, как Python) и исполнять на нём ваш код, отдавая результат исполнения пользователям. На нём же можно делать отдельные приложения, используя дополнительные фреймворки.

Чем хорош Node.js

Если вы начинали изучать программирование, вам будет понятна концепция последовательного исполнения программы. Сначала исполняется первая строчка, потом вторая, потом третья и так далее. Может быть, где-то программа прыгнет вперёд-назад, где-то закольцуется, но в целом она исполняется линейно.

У JS есть фишка — он умеет исполнять код параллельно (условно говоря). Программисты называют это обработкой событий. Программе можно сказать: «Если когда-нибудь произойдёт вот это — выполните вон ту функцию, она знает, что делать». Таких событий можно предусмотреть много — получается, процессы как будто параллельны. Программа может просто сидеть и ждать, когда что-то произойдёт.

Больше того, процессы асинхронны: программа может что-то запросить в самом начале работы — например, спросить что-то у базы данных. И пока база данных чешется, программа на Node.js будет заниматься дальше своими делами. А как придёт ответ — возьмёт его и обработает.

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

Именно такое равномерное распределение всего в цикле событий и даёт Node.js преимущество при создании серверных приложений.

Пример: веб-сервер на Node.js

Как работает обычный веб-сервер

Раньше была такая проблема:

  1. На странице нужно, например, показать аватарку и никнейм пользователя.
  2. Для этого сервер делал запрос к базе данных, чтобы получить оттуда эту информацию.
  3. Пока база не ответит, сервер ничего не может сделать — он терпеливо ждёт.
  4. Сервер ждёт.
  5. Когда от базы приходит ответ с картинкой и никнеймом, сервер снова оживает, продолжает загружать страницу и в самом конце запрашивает у базы фоновую картинку для сайта.
  6. Сервер ждёт
  7. Страница тоже пока не работает, потому что не загрузилась до конца. Половина скриптов тоже не работают, потому что они ждут полной загрузки страницы. Все ждут, пока база ответит.
  8. На каждый такой запрос нужны ресурсы, чтобы держать соединение с базой.
  9. Если таких запросов много, ресурсы на сервере быстро заканчиваются, и тогда сайт начинает тормозить у всех сразу.
  10. Сервер начинает тупить и иногда вываливается с ошибкой. Страницы падают, пользователи психуют и уходят на другой сайт.

Как работает сервер на Node.js

  1. На странице нужно, например, показать аватарку и никнейм пользователя.
  2. Для этого сервер делает запрос к базе данных, чтобы получить оттуда эту информацию, а сам продолжает формировать страницу дальше.
  3. Пока не пришла аватарка, сервер уже сделал всё остальное и увидел, что нужна фоновая картинка.
  4. Сервер запрашивает картинку, а в это время ему пришла аватарка из прошлого запроса. Раз аватарка пришла, сервер вставляет её на нужное место. Пока он это делал — пришла фоновая картинка.
  5. Все материалы на месте, можно показывать страницу пользователю. Страница загружается быстрее, потому что сборка произошла параллельно.

Для чего ещё нужен Node.js

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

  • чаты,
  • социальные сети,
  • системы совместной работы над проектом,
  • онлайн-редакторы текста.

А ещё на нём можно написать практически любое приложение и запустить его под Windows, MacOs или Linux. Это можно использовать для разработки универсальных приложений, например, списка задач, который должен работать на всех платформах, синхронизировать данные в реальном времени и уметь отправлять всё на мобильное устройство.

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

Кто это использует

Node.js в качестве основы для своей платформы выбрали много известных компаний:

  • Walmart — крупнейшая сеть американских розничных магазинов,
  • LinkedIn — социальная сеть деловых контактов,
  • Uber — такси,
  • E-bay — аукцион-платформа для продажи товаров по всему миру,
  • GitHub — репозиторий проектов для программистов,
  • Netflix — производство и съёмка сериалов,
  • Trello — сервис для управлениями проектами.

С чего начать

Если хотите попробовать Node.js уже сейчас, начните с этих ресурсов — там достаточно информации для быстрого старта.

Медиум — очень кратко, но всё по делу.

RuVDS (.pdf) — отличное руководство по Node.js. Много, объёмно, но интересно.

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Вам может быть интересно
Делаем свой планировщик задач

Bootstrap + TodoList = Trello

hard
За что админы любят SSH

И почему вам тоже нужно его полюбить.

easy
Все сидят на Вордпрессе. Вам оно надо?

По понятным причинам в наше неспокойное время Вордпресс нужен всем

easy
Как подготовить резюме для крупной компании?

Инструкция новичкам от разработчика из Яндекс.Практикума.

easy
Как устроен Практикум

И зачем там столько тренажёров.

easy
Как устроено сжатие с потерями

Благодаря этому у нас есть стримы и ютуб.

easy
5 хитростей при работе с ChatGPT

Как получить максимум от нейросети

easy
Selectel: как работает российский провайдер инфраструктуры и облаков

Чем занимается инфраструктурный провайдер, можно ли в него устроиться и как там с импортозамещением

easy
NFT — новые модные токены. Зачем они нужны и не развод ли это?

Объясняем на Аллегровой.

easy
medium
[anycomment]
Exit mobile version