Подключение модуля событий
До сих пор мы подключали только созданные нами модули. Например, модуль sinx. В Node.js есть встроенные модули, один из которых отвечает за обработку событий. Для подключения встроенного модуля используется директива require:
const events = require('events');
const myEmitter = new events.EventEmitter();
Здесь подключается модуль events и создаётся переменная myEmitter, используемая для работы с событиями.
Создание и вызов события
Событие будем создавать и вызывать вручную. Это пригодится позже, при разработке сайта.
Создадим переменную для обработчика событий:
const myEmitter = new events.EventEmitter();
myEmitter — объект для отслеживания событий. Он содержит метод on(), аналогичный addListener() в jQuery. Синтаксис on():
myEmitter.on('myEvent', (text) => {
console.log('Обработчик событий сработал:', text);
});
‘myEvent’ — имя события, функция-обработчик выводит переданный параметр text в консоль. Создаётся собственное событие ‘myEvent’.
Вызов события осуществляется методом emit():
myEmitter.emit('myEvent', 'Обработчик событий сработал');
В терминале появится сообщение: «Обработчик событий сработал: Обработчик событий сработал». Искусственно вызвано событие ‘myEvent’ с переданным параметром.
Наследование событий с помощью модуля util
Модуль util позволяет наследовать обработчики событий для объектов. Создадим конструктор объектов Cars:
const util = require('util');
function Cars(model) {
this.model = model;
}
Используем util.inherits() для наследования обработчика событий от EventEmitter:
util.inherits(Cars, events.EventEmitter);
Теперь объекты, созданные на основе Cars, наследуют EventEmitter:
const bmw = new Cars('BMW');
const audi = new Cars('Audi');
const volvo = new Cars('Volvo');
const cars = [bmw, audi, volvo];
cars.forEach(car => {
car.on('speed', (text) => {
console.log(`${car.model}: ${text}`);
});
});
bmw.emit('speed', '254.5 км/ч');
volvo.emit('speed', '180 км/ч');
Созданы три объекта, добавлен обработчик событий ‘speed’ и вызван для каждого объекта с индивидуальными параметрами. Виден вывод скорости для каждой машины, демонстрирующий удобство наследования событий. Модуль util упрощает работу с событиями, позволяя наследовать их для групп объектов.
В этом уроке освоено создание и отслеживание событий в Node.js, изучено использование модулей events и util для эффективной работы с событиями. Это значительно упрощает разработку сложных приложений.