Архитектура

Архитектура

Qpalette

Q.Palette — это не только дизайн-система и палитра компонентов, но и платформа, позволяющая внутри одного SPA (opens in a new tab)(single page application)-приложения описывать микро-приложения на любом фреймворке.

Общая архитектура состоит из следующих компонентов: главное приложение (так называемое, рутовое или Root Application) и микро-приложения (проекты), которые подгружаются внутрь главного. При помощи технологии веб-компонентов (opens in a new tab) доступна возможность описывать приложения на любом фреймворке: запустить React-приложение внутри Angular-приложения. Использование инструментов Q.Palette дает возможность упаковки любого Web JavaScript-приложения в веб-компонент. На диаграмме представлена общая схема интерфейса пользователя:

Рассмотрим взаимодействия между рутовым приложением и веб-компонентом. На диаграмме ниже описывается процесс загрузки веб-компонента в рутовое приложение. После нажатия на пункт меню происходит создание области для веб-компонента, где он будет отображаться. В этот же момент загружается JavaScript-бандл, содержащий логику вашего приложения. Когда загрузка бандла завершена, создаётся канал связи, с помощью которого будет происходить взаимодействие рутового приложения с веб-компонентом. Затем веб-компонент сообщает, что его инициализация завершена и он готов принимать события. В этот момент, рутовое приложение отправляет в веб-компонент событие роутинга, соответствующего тому, что было в пункте меню.

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

После инициализации приложения для передачи событий в рутовом приложении доступен сервис WebComponentEventsService, а в веб-компоненте — QRootEventsService. Эти сервисы содержат методы, соответствующие каждому из доступных событий. Существует возможность и передачи собственных событий, но не рекомендуется пользоваться данной возможностью, так как в будущих версиях придуманное имя события может быть переопределено.