Найти тему
Logonok

Услышать главное в веб-приложении

Оглавление

При взаимодействии пользователей и веб-приложения возникают множество разнообразных событий - авторизация, создание и удаление объектов, загрузка файлов и так далее. Реакция приложения на события в целом, определяет его функциональность.

В декларативном фреймворке Evado управление обработкой событий осуществляется в модуле «Администрирование» в разделе «События».

Подробнее о декларативной разработке можно прочитать в статье «Создание приложения без программирования».

Слушатели

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

Слушатели связывают события с обработчиками
Слушатели связывают события с обработчиками

События задаются как строковые идентификаторы. Если в названии события используется точка, то формируется иерархия подключения. Например, слушатель события meta.base.create.myClass (см. ниже служебные события) получит оповещение при создании объекта класса myClass. Слушатель же meta.base.create получит события meta.base.create.myClass, meta.base.create.myClass2 и так далее, то есть при создании объекта любого класса.

Для слушателя можно указать сразу несколько событий. При возникновении любого из них будут вызваны все указанные обработчики.

Обработчики

Событие - это спусковой механизм для начала определенных действий. Реакция на событие представлена обработчиками, а также уведомлениями и задачами (см. ниже). Обработчик описывает конфигурацию JavaScript класса, который содержит метод execute, вызываемый при наступлении события. Пример обработчика из демо-приложения фреймворка Evado.

Обработчик событий содержит конфигурацию создания
Обработчик событий содержит конфигурацию создания

В метод execute передаются данные, структура которых зависит от типа события. Например, при входе в систему передаётся идентификатор пользователя, а при неудачной попытке входа - IP и логин.

Во фреймворке Evado имеется обработчик MetadataClassInstantiation, который используется для создания объекта заданного класса. Например, при регистрации пользователя в системе нужно создать объект класса метаданных, который хранит данные пользователя для приложения. Пример можно посмотреть в приложении «Социальная сеть» - описание обработчиков событий и слушателей.

Уведомления и задачи

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

Задачи были рассмотрены в предыдущей статье - создание запланированных действий без участия пользователей. Стартовым сигналом для задачи служит наступление заданной даты. Это является частным случаем обработки событий.

Служебные события

В системе имеется несколько заранее определенных категорий событий. Первая категория - это события авторизации пользователя:

  • auth.login - вход в систему.
  • auth.logout - выход из системы.
  • auth.fail - неудачная попытка входа в систему.
  • auth.register - регистрация нового пользователя.
  • auth.changePassword - изменение пароля.
  • auth.createVerification - создание запроса на подтверждение электронного алреса.
  • auth.verify - электронный адрес подтвержден.

Вторая категория - это события изменения объектов, определенных метаданными приложения. Они начинаются с префикса meta, затем следуют название модели метаданных, само действие, вызвавшее событие, и кодовое имя класса:

  • meta.base.create.className- создание нового объекта класса.
  • meta.base.update.className - модификация объекта класса.
  • meta.base.delete.className - удаление объекта класса.
  • meta.base.transit.className - переход объекта класса в новое состояние.
  • meta.base.transit.className.transitionName - определенный переход объекта класса в новое состояние.

Вызов события

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

Вызов события вручную
Вызов события вручную

При создании дополнительных компонентов, непосредственно в коде приложения, событие можно вызывать явно через метод emit модуля. Пример реализации смотрите в приложении «Сеть такси».

Заключение

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

Демонстрационное приложение Evado можно скачать из открытого хранилища и запустить в Docker или в окружении Node.js и MongoDB.

Декларативный фреймворк Evado - три в одном!
Декларативный фреймворк Evado - три в одном!