Рубрика:
Разработка /
Веб-технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
КИРИЛЛ СУХОВ, веб-программист в дистрибьюторской компании MICS. Занимается проектированием и разработкой различных интернет-сервисов. Круг интересов банален – веб-технологии, RIA, Framework-среды, sukhov-kirill@yandex.ru
Модульная архитектура Node.js
Давайте разберемся с модульной архитектурой Node.js, освоим менеджер пакетов npm и даже напишем свой собственный модуль! Но сначала изучим механизм обработки событий Node.js
События
Обработка событий – основа работы с Node.js. События генерируют практически все объекты. В явном и неявном виде мы уже использовали их (например, событие exit для объекта process), теперь пришло время разобраться с этим механизмом более подробно.
За события в Node.js отвечает специальный модуль events.
Назначать объекту обработчик события следует методом addListener (event, listener), аналогичным имеющемуся в обычном «браузерном» JavaScript. Аргументами для него служат имя события (строка, обычно в camelCase-стиле: «connect», «messages», «messageBegin») и функция обратного вызова – обработчик события.
Для особо ленивых разработчиков, привыкших к удобствам jQuery, для этого метода существует синоним – просто «on»:
server.on('connection', function () {
console.log('connected!');
});
По-моему, это прекрасно, давайте и далее останемся ленивыми. У метода on() есть чрезвычайно полезная модификация – once(), назначающая однократный обработчик события. То есть код:
server.once('connection', function () {
console.log('first connection!');
});
сработает только при первом соединении с сервером.
Теоретически с одним объектом можно связать сколько угодно обработчиков, но по умолчанию их количество ограничено 10. Это сделано для предотвращения утечек памяти. Ограничение преодолевается методом setMaxListeners(n), где n – требуемое максимально допустимое количество обработчиков.
Статью целиком читайте в журнале «Системный администратор», №12 за 2013 г. на страницах 46-52.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|