Node.js был разработан Райаном Далем в 2009 году. До этого момента Райан работал разработчиком, программируя на Ruby on Rails. Базовая концепция Node.js пришла ему в голову, когда он пользовался Flickr (сайт для загрузки и обмена изображениями). Он заметил на сайте индикатор прогресса (статус бар), который показывал прогресс загрузки изображения. Сейчас это обычное дело, но в конце 2000-х годов это было в новинку! В времена серверы не имели возможности обрабатывать сразу несколько задач в большом количестве. Например загружать изображение и одновременно обрабатывать другие запросы этого же пользователя. Сейчас, эта идея известна как параллелизм!

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

 

На сервер приходит запрос, в данном случае на загрузку файла (изображения). Сервер принимает этот запрос и пока он его обрабатывает (вертикальная стрелка справа), он также обрабатывает другие запросы, прежде чем вернет ответ на основной запрос. Это и есть концепция параллелизма, которая легка в основу Node.js.


Даль и группа разработчиков смогли реализовать эту замечательную технологию с помощью JavaScript-движка V8, разработанный датским отделением компании Google. Движок принимает код JavaScript и компилирует его в C++, который выполняется с молниеносной скоростью. Движок V8 делает это «на лету». Отчасти это то, что дает Node.js большое преимущество, когда дело доходит до скорости, по сравнению с другими языками и фреймворками.


Как тогда, так и сейчас, когда вы создаете и запускаете веб-сервер на Node.js — он не будет работать «из коробки». Разработчики должны использовать либо сторонние фреймворки, либо написать логику непосредственно над Node.js, чтобы превратить его в полноценный веб-сервер.

Но почему Node.js не может работать просто «из коробки»? Это связано с тем, что Node.js был создан для решения проблем куда больших, чем просто одновременная обработка нескольких единовременных запросов на веб-сервере. Но он был создан, чтобы решить проблему с обработкой огромного количества запросов и на высоконагруженных серверах. Это и есть одна из главных причин популярности Node.js.

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

 

В любом случае, давайте рассмотрим современный Node.js в 2018 году! В настоящее время, наиболее часто его используют при разработке бэкенда. Той части сайта, которую не видят обычные пользователи и которая отвечает за логику работы сайта. Тем не менее он часто используется и с основными современными фронтенд-фреймворками. К ним относятся Angular, Vue и React. Другими словами: современный Node.js возможно использовать при Full-Stack разработке.

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


Итак, давайте подведем итоги! Node.js —  это JavaScript фреймворк, основанный на движке V8 от Google, созданный для решения проблемы одновременной обработки большого количества запросов. Node.js отлично справляется с этой задачей и именно поэтому он стал одной из самых популярных платформ для разработки веб-сайтов. Разработчики могут использовать встроенный менеджер пакетов NPM для добавления других фреймвокров и JavaScript-библиотек в свои проекты.

Перевод статьи Kieran Maher: NodeJS: In Three(ish) Minutes

Предыдущая статьяНасколько хорошо вы знаете Python?
Следующая статьяGolang — изящная обработка ошибок