1.3 Управление зависимостями плагинов
SFLoaderPlugin поддерживает механизм управления зависимостями, при котором зависимости плагинов загружаются в первую очередь, до основного компонента. Например, fancybox может зависеть от jquery.
Как это работает
На клиенте в конфигурацию плагинов можно передать объект relations, в котором указывается, какие компоненты зависят от других:
{relations: { "fancybox": ["jquery"], "tooltip": ["jquery", "wow"]}}
Когда загрузчик встречает компонент fancybox, он сначала загружает все указанные зависимости (jquery, ...), а затем — сам fancybox.
Это важно для корректной работы, если основной плагин использует функциональность из зависимого (например, общие функции, анимации, базовые стили и т.д.).
Пример запроса к серверу
SFLoaderPlugin отправляет зависимости вместе с основными компонентами в параметре relations:
/simai/loader/loader.php?a=modal&relations={"fancybox":["jquery"]}
На серверной стороне эти данные используются для генерации кеша и корректного порядка подключения ассетов.
Как реализован порядок загрузки
- Загрузчик анализирует зависимости;
- Загружает все зависимости в порядке их перечисления;
- Только после этого — основной компонент;
- Компоненты инициализируются после полной загрузки.
Особенности
- Поддерживаются многоуровневые зависимости;
- Один и тот же компонент не загружается дважды;
- Работает и при начальной инициализации, и при динамической подгрузке;
- Порядок загрузки гарантирует отсутствие ошибок из-за незагруженных зависимостей.