События и расширения
События и расширения помогают добавлять поведение без переписывания базовых шаблонов и сценариев. Используйте их для аналитики, дополнительных блоков, уведомлений и интеграций с внешними сервисами.
Типовые точки расширения
| Точка | Пример |
|---|---|
| Страница | Добавить блок на главную или в личный кабинет |
| Форма | Добавить дополнительное поле или подсказку |
| API-результат | Показать уведомление после успешной операции |
| Модуль | Расширить магазин, склад, поддержку или маркетплейс |
| Аналитика | Отправить безопасное событие после действия пользователя |
Принципы
- Не изменяйте базовые шаблоны без необходимости.
- Добавляйте расширение в отдельный partial или компонент.
- Не блокируйте основной сценарий, если внешняя интеграция недоступна.
- Не храните секреты в JavaScript и шаблонах.
- Логируйте только технические идентификаторы и безопасный контекст.
Пользовательские события
Для событий интерфейса передавайте только безопасные данные:
window.dispatchEvent(new CustomEvent('mmoweb:payment:created', {
detail: {
paymentId: 'public-id',
amount: 100,
currency: 'USD'
}
}));
Не передавайте в браузер приватные ключи, токены, PIN, платежные реквизиты или внутренние ответы платежных систем.
Расширение модулей
Если расширение относится к модулю, держите рядом:
- шаблон блока;
- стили блока;
- текстовые ключи;
- описание настройки;
- проверочный сценарий.
Так проще обновлять модуль и понимать, какие файлы участвуют в изменении.
Ошибки
Расширение не должно скрывать системную ошибку API. Показывайте пользователю понятное сообщение, а в лог пишите техническую категорию ошибки и request id.