Web

Node.js — определение, возможности, события и задержка

Lorem ipsum dolor

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

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

Node.js — это не отдельный язык программирования, а возможность применять JavaScript в backend. То есть язык во frontend и backend остается один и тот же — это JavaScript, однако отличаются используемые API.

Возможности Node.js

Node.js — это возможность использовать JavaScript при работе с серверной частью веб-приложений. Во «фронте» JavaScript — непревзойденный лидер. В бэкенде совсем другие лидеры — это PHP, Python, Java и др. Поэтому Node.js приходится жестко конкурировать.

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

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

Оценивая возможности Node.js, можно сказать, что платформа мало чем ограничена по функционалу. Да, она пока не так популярна, как PHP или Python в серверной части, но всему свое время. На сегодня использование Node.js зарекомендовало себя только с хорошей стороны. Среди пользователей этой платформы можно найти такие компании, как:

  • Netflix,

  • Uber,

  • eBay,

  • Yahoo,

  • и др.

Глобальные переменные в Node.js

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

Глобальные переменные в Node.js объявляются при помощи ключевого слова «global». Также при помощи этого слова объявляются глобальные функции. «Глобальные» означает, что к ним можно получить доступ из любой части приложения. Во фронтенде альтернативой слова «global» является слово «window». Поэтому тем, кто знаком с JavaScript во «фронте», в частности со словом «window», будет легче разобраться с работой глобальных переменных, которые объявлены словом «global» в Node.js. И те и другие работают по похожей технологии.

Чтобы посмотреть, каким образом работают глобальные переменные в Node.js, давайте разработаем небольшой скрипт «salutation.js». Код будет выглядеть примерно так:

let presentDateTime = new Datetime();

 

global.datetime = presentDateTime;

 

module.exports.getMessage = function () {

let hours = presentDateTime.getHours();

if (hours > 17) return 'Приятный вечерок, ' + global.firstname;

else if (hours > 11) return 'Здравствуйте, ' + firstname;

else return 'Прекрасное утречко, ' + firstname;

};

 

Мы установили переменную «даты» как «глобальную» при помощи ключевого слова: «global.datetime=presentDateTime». Также в скрипте определили значение глобальной переменной «firstname». Эта переменная объявлена за пределами нашего скрипта, но точно с ключевым словом «global». Например, где-то может быть вот такой скрипт:

const salutation = require('./salutation');

 

global.firstname = 'Dormidont';

 

global.console.log(datetime);

console.log(salutation.getMessage());

 

Как видно, в данном скрипте объявлена глобальная переменная «firstname», которая используется в первом скрипте «salutation.js». Также на экран консоли выводится другая глобальная переменная «datetime». Если запустить последний скрипт в работу, тогда увидим приветствие для имени «Дормидонт». Приветствие будет формироваться, исходя из времени запуска скрипта. Например, в результате работы скрипта может получиться следующее:

  •  «Прекрасное утречко, Дормидонт»;

  •  «Здравствуйте, Дормидонт»;

  •  «Приятный вечерок, Дормидонт».

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

События в Node.js

События в Node.js применяются часто. Реализация событий происходит по асинхронной архитектуре. В данной архитектуре задействованы специализированные объекты — эмиттеры. Эмиттеры генерируют различные события, а специализированные функции-обработчики (слушатели) их обрабатывают. Каждое событие генерирует объекты, которые являются представителями класса «EventEmitter».

Для того чтобы к какому-то событию «прикрепить» функцию-обработчика, используется специализированная функция «eventEmitter.on()». Каждому событию могут «прикрепляться» несколько функций-обработчиков.

Давайте рассмотрим, как это все реализуется в коде. Для этого создадим документ «example.js»:

const Emitter = require('events')

let emitter = new Emitter()

let eventFirstName = 'welcome'

emitter.on(eventFirstName, function () {

console.log('Salut!')

})

 

emitter.on(eventFirstName, function () {

console.log('Здравствуйте!')

})

 

emitter.emit(eventFirstName)

 

Заключение

Возможности Node.js пока ничем не ограничиваются. Эту платформу можно применять при разработке серверной части приложений любой сложности.

Мы решили внести собственный вклад в рост популярности этой платформы. Мы организуем серию статей о Node.js. Сегодня, к примеру, мы посмотрели, как выглядят глобальные переменные и события в Node.js.

Схожие статьи

Web

Функции startWith() и endWith() в PHP

Web

Как получить параметры строки URL-запроса

Web

Есть ли способ обновить расширение через composer и обойти ошибку ограничения памяти в Magento2

Web

Как получить ID последней обновленной строки в MySQL