Найти в Дзене
Logonok

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

При взаимодействии пользователей и веб-приложения возникают множество разнообразных событий - авторизация, создание и удаление объектов, загрузка файлов и так далее. Реакция приложения на события в целом, определяет его функциональность. В декларативном фреймворке Evado управление обработкой событий осуществляется в модуле «Администрирование» в разделе «События». Подробнее о декларативной разработке можно прочитать в статье «Создание приложения без программирования». Слушатели Для того, чтобы приложение реагировало на событие, необходимо создать слушателя, в котором определены идентификатор события и действие (обработчик) при его наступлении. События задаются как строковые идентификаторы. Если в названии события используется точка, то формируется иерархия подключения. Например, слушатель события meta.base.create.myClass (см. ниже служебные события) получит оповещение при создании объекта класса myClass. Слушатель же meta.base.create получит события meta.base.create.myClass, meta.b
Оглавление

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

В декларативном фреймворке 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 - три в одном!