Исторический контекст и точка зрения разработчика

Краткая хронология

Райан Даль создал Node. js в 2009 году для запуска JavaScript на сервере. боковая сторона. К тому времени, когда сообщество не приняло эту идею, только что была выпущена новая версия Ruby on Rails, и разработчики со всего мира очень хотели начать писать код.

В 2010 году удача Райана Даля начала меняться, когда Исаак Шлютер создал диспетчер пакетов узлов (NPM). Диспетчер пакетов позволял разработчикам Node.js легко обмениваться пакетами и поддерживать их.

Еще одним отличным союзником Node.js был MongoDB. Разработанный примерно в то же время, MongoDB - это база данных NoSQL, которая использует нотацию объектов JavaScript (JSON) для хранения данных в виде документов, что стало очень удобно, когда приложения социальных сетей начали популяризировать RESTful JSON API .

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

Но если серьезно, что такое Node.js?

До недавнего времени официальный сайт определял Node.js как:

Среда выполнения JavaScript, основанная на движке JavaScript V8 в Chrome. Node.js использует управляемую событиями, неблокирующую модель ввода-вывода, что делает его легким и эффективным.

Механизм JavaScript Chrome V8:

V8 - это проект Google с открытым исходным кодом, написанный на C ++, который компилирует и выполняет код JavaScript. Когда JavaScript был впервые разработан, каждый веб-браузер имел свой механизм JavaScript, например SpiderMonkey для использования Mozzila в Firefox, JavaScriptCore для использования Apple в Safari и V8 для использования Google в Chrome.

Среда выполнения JavaScript:

Фактически, Node.js не является языком программирования. Как и Google Chrome, Node.js использует движок V8 для предоставления и расширения функций JavaScript, например чтения и записи в файловую систему на вашем компьютере.

Событийно-ориентированный:

Большинство API в Node.js асинхронны. Они реализуют объекты, называемые «эмиттерами», которые предоставляют методы для передачи сигналов объектам функций, называемым «слушателями».

Хорошая аналогия - всем известный HTTP-запрос. Каждый раз, когда пользователь нажимает кнопку, прослушиватель событий получает сигнал для выполнения какого-либо действия. Аналогом в Node.js может быть операция чтения и записи файла на вашем компьютере.

Комбинация событий и обратных вызовов позволила обрабатывать асинхронные операции в приложениях Node.js. В настоящее время можно использовать функции «Promises» или «Async / Await», предоставляемые более новыми версиями.

Неблокирующий ввод / вывод:

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

На рисунке 02 можно увидеть две программы, которые выполняют один и тот же поток с одной и той же определенной функцией doWork () с использованием шаблона обратного вызова. Слева программа sync.js выполняется построчно. Однако программа async.js справа использует функцию setTimeout () внутри doWork () ,, что задерживает вывод примерно на одну секунду, в результате чего после последней строки кода console. отображается сообщение Я делаю некоторую работу. журнал (Готово).

Почему Node.js?

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

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

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

Использованная литература: