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

1. Node.js - это повсеместная среда выполнения

JavaScript - хорошее начало для новых разработчиков, и он остается языком выбора для многих опытных разработчиков. И хотя язык существует уже некоторое время и несколько лет томился в 90-х и начале 2000-х, по мере роста интереса к нему, JavaScript развился и добавил функции, которые считаются важными для современных языков программирования. И, как и любой хороший язык, он прост и достаточно доступен для любого, чтобы начать с него, но достаточно мощный, чтобы даже старые руки находили новые вещи, которые можно было изучить и использовать в своей работе.

Возможно, вы уже используете богатый клиентский фреймворк, такой как (Angular, Ember, Backbone) и серверный API RESTful, который перемещает JSON вперед и назад. Даже если вы не используете один из этих фреймворков, вы написали собственный на jQuery или Vanilla JavaScript. Так что, если вы не используете Node.js на сервере, значит, вы постоянно переводите. Вы переводите две вещи: 1) логику в вашей голове из JavaScript в серверную структуру и 2) данные HTTP из JSON в объекты на стороне сервера.

Популярность JavaScript как языка растет, и он вышел за рамки веб-браузера. Он никуда не денется в ближайшее время.

2. Это быстро

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

В дополнение к молниеносному выполнению JavaScript настоящая магия Node.js - это цикл обработки событий. Цикл событий - это единственный поток, который выполняет все операции ввода-вывода асинхронно. Традиционно операции ввода-вывода выполняются синхронно (блокировка) или асинхронно, порождая параллельные потоки для выполнения работы. Этот старый подход потребляет много памяти и, как известно, сложен для программирования. Напротив, когда приложение Node должно выполнить операцию ввода-вывода, оно отправляет асинхронную задачу в цикл событий (что такое цикл событий?) Вместе с функцией обратного вызова, а затем продолжает выполнять остальная часть своей программы. Когда асинхронная операция завершается, цикл обработки событий возвращается к задаче для выполнения ее обратного вызова.

Другими словами, чтение и запись в сетевые соединения, чтение / запись в файловую систему и чтение / запись в базу данных - все очень распространенные задачи в веб-приложениях - выполняются в Node очень и очень быстро. Использование асинхронного шаблона приводит к созданию приложения с высокой производительностью. Node позволяет создавать быстрые, масштабируемые сетевые приложения, способные обрабатывать огромное количество одновременных подключений с высокой пропускной способностью.

3. Модули и сообщество

Npm - это менеджер пакетов Node.js, и он отличный. Конечно, он напоминает менеджеров пакетов из других экосистем, но npm быстр, надежен и согласован. Он отлично справляется с указанием и установкой зависимостей проекта, но также скрывает множество сложностей. Он держит пакеты изолированными от других проектов, избегая конфликтов версий. Но он также обрабатывает глобальную установку команд оболочки и бинарных файлов, зависящих от платформы. Я не могу вспомнить случай с npm, когда мне приходилось спрашивать себя: Почему эти модули конфликтуют? Где установлен этот модуль? Почему выбирает именно эту версию, а не ту?

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

4. JSON в вашей базе данных

Итак, вы решили использовать JavaScript на сервере, и вы гордитесь своим решением, которое позволяет избежать всего этого преобразования данных клиента в данные сервера, но для сохранения этих данных в базе данных требуется еще больше переводов!

Хорошие новости. Если вы используете объектную базу данных, такую ​​как Mongo, вы также можете расширить JavaScript до уровня персистентности.

Использование Node.js позволяет использовать один и тот же язык на клиенте, на сервере и в базе данных. Вы можете хранить свои данные в собственном формате JSON из браузера на диск.

5. Работа в режиме реального времени с помощью веб-сокетов

Если Node.js отлично справляется с множеством одновременных подключений, то логично, что он лучше всего справляется с многопользовательскими веб-приложениями реального времени, такими как чат и игры. Цикл обработки событий Node заботится о многопользовательских требованиях. Питание в реальном времени обеспечивается за счет использования протокола websocket. Веб-сокеты - это просто двусторонние каналы связи между клиентом и сервером. Таким образом, сервер может передавать данные клиенту так же легко, как и клиент. Веб-сокеты работают через TCP, избегая накладных расходов HTTP.

Socket.io - одна из самых популярных используемых библиотек для веб-сокетов, которая упрощает создание совместных веб-приложений. Вот простой сервер, использующий socket.io:

var app = require(‘http’).createServer(handler)
var io = require(‘socket.io’)(app);
app.listen(8080);
io.on(‘connection’, function (socket) {
 
 // Send a message to the client
 socket.emit(‘event to client’, { hello: ‘world’ });
 // Handle a message from the client
 socket.on(‘event from client, function (data) {
 console.log(data);
 });
});

6. Потоковая передача данных

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

Узел может читать / записывать потоки в веб-сокеты так же хорошо, как он может читать / записывать потоки в HTTP. Например, мы можем направить стандартный вывод из запущенного процесса на сервере в браузер через веб-сокет и заставить веб-страницу отображать вывод в режиме реального времени.

7. Единая кодовая база - и вы в реальном времени бесплатно

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

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

// Save the value of ‘name’ upon clicking ‘submit’ directly in the // browser!
‘.click .submit’: function(e, tpl) {
 Users.update(
 { _id: this._id },
 { $set: { name: $(‘.name’).val() }}
 );
}

8. Корпоративное спонсорство и Linux Foundation

Неотъемлемым риском для любого проекта с открытым исходным кодом является отказ от его сопровождающих-добровольцев. Но в случае с Node.js. Node имеет корпоративное спонсорство и участие сотрудников из Joyent, Microsoft, Paypal, Walmart и других, и является частью Linux Foundation, которая управляет проектами и гарантирует долгую и активную жизнь Node.

9. Вариантов хостинга в изобилии

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

10. Каждый разработчик знает (немного) JavaScript

Это для твоего босса.

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

В заключение бонус!

Но подождите, это еще не все! Как и в случае с любой платформой или продуктом, с открытым исходным кодом или любым другим, его сообщество является огромным фактором влияния, а сообщество Node не имеет себе равных. От митапов до конференций, каждый день над экосистемой работают умные люди. В то же время сообщество доброжелательное. Эти же умные люди всегда готовы предложить помощь людям, плохо знакомым с Node или даже с программированием в целом. Вы не будете чувствовать себя плохо, если зададите вопрос в IRC или Slack или создадите проблему. Это сообщество также очень активное, с более чем 400 000 модулей на npm.

Нет сомнений в том, что Node никуда не денется.
Такие компании, как NASA, Walmart, Uber и Fusion уже приняли Node, и многие другие начинают разговор об использовании Node. .
»Почему бы не попробовать?

Это отредактированная статья, первоначально написанная Джерардом Сычай, разработчиком компании Differential.