1.3 Управление зависимостями плагиновlink

SFLoaderPlugin поддерживает механизм управления зависимостями, при котором зависимости плагинов загружаются в первую очередь, до основного компонента. Например, fancybox может зависеть от jquery.

Как это работаетlink

На клиенте в конфигурацию плагинов можно передать объект relations, в котором указывается, какие компоненты зависят от других:

{relations: { "fancybox": ["jquery"],  "tooltip": ["jquery", "wow"]}}

Когда загрузчик встречает компонент fancybox, он сначала загружает все указанные зависимости (jquery, ...), а затем — сам fancybox.

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

Пример запроса к серверуlink

SFLoaderPlugin отправляет зависимости вместе с основными компонентами в параметре relations:

/simai/loader/loader.php?a=modal&relations={"fancybox":["jquery"]}

На серверной стороне эти данные используются для генерации кеша и корректного порядка подключения ассетов.

Как реализован порядок загрузкиlink

  1. Загрузчик анализирует зависимости;
  2. Загружает все зависимости в порядке их перечисления;
  3. Только после этого — основной компонент;
  4. Компоненты инициализируются после полной загрузки.

Особенностиlink

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