SelfDestroy и файл опций

Параметр selfDestroy управляет жизненным циклом экземпляра анимации SVG и определяет, будет ли библиотека автоматически освобождать ресурсы после завершения отрисовки. В контексте SVG-анимации это особенно важно, поскольку каждый экземпляр Vivus создаёт внутренние структуры для управления путями, состоянием анимации и таймингом.

При значении selfDestroy: true экземпляр удаляется из памяти после завершения анимации. Это означает, что:

  • прекращается управление состоянием SVG-путей
  • удаляются привязанные обработчики анимации
  • освобождаются ссылки на DOM-элементы внутри библиотеки
  • объект становится недоступен для повторного запуска

При значении selfDestroy: false экземпляр сохраняется, что позволяет:

  • повторно запускать анимацию без пересоздания объекта
  • изменять параметры и переинициализировать поведение
  • управлять жизненным циклом вручную

Ключевое различие заключается в модели управления памятью: автоматическое уничтожение ориентировано на одноразовые анимации, тогда как сохранение экземпляра — на интерактивные или повторяющиеся сценарии.

Поведение при завершении анимации

Механизм работы selfDestroy активируется строго после завершения всех этапов отрисовки SVG-путей. Внутренне это связано с финальным состоянием таймера и завершением последовательности stroke-dashoffset.

При включённом selfDestroy:

  • финальное состояние фиксируется
  • выполняется очистка внутренних ссылок
  • экземпляр больше не реагирует на методы управления

При отключённом selfDestroy:

  • сохраняется финальный визуальный результат
  • состояние объекта остаётся доступным
  • возможны повторные вызовы методов play, reset, stop

Особенности использования в сложных интерфейсах

В интерфейсах с большим количеством SVG-анимаций значение selfDestroy влияет на производительность и управляемость памяти.

Использование selfDestroy: true целесообразно в случаях:

  • анимация логотипа при загрузке страницы
  • однократные декоративные эффекты
  • переходные заставки и splash-экраны

Использование selfDestroy: false оправдано при:

  • интерактивных графиках
  • повторяющихся анимациях элементов интерфейса
  • управляемых сценах, где требуется повторный запуск

При большом количестве SVG-элементов сохранение экземпляров без необходимости может увеличивать потребление памяти, так как каждый объект продолжает удерживать ссылки на DOM и внутренние структуры расчёта пути.


Файл опций в Vivus

Файл опций представляет собой внешний или модульный способ хранения конфигурации анимаций, позволяющий отделить логику инициализации от описания параметров поведения SVG-анимации. В практических реализациях это может быть JavaScript-модуль, JSON-структура или централизованный конфигурационный объект.

Основная цель такого подхода — унификация настроек и повторное использование конфигураций для разных SVG-элементов.

Типовая структура опций включает:

  • type — способ прорисовки (последовательный, синхронный, поэлементный)
  • duration — длительность анимации
  • start — момент запуска
  • delay — задержка между сегментами
  • pathTimingFunction — функция распределения времени по пути
  • animTimingFunction — кривая анимации
  • forceRender — принудительный рендеринг
  • selfDestroy — автоматическое уничтожение экземпляра

Вынос этих параметров в отдельный файл позволяет формировать предсказуемую систему анимаций, где поведение SVG определяется декларативно.

Пример структуры конфигурационного файла

export const logoAnimationOptions = {
  type: 'oneByOne',
  duration: 200,
  start: 'autostart',
  delay: 0,
  forceRender: true,
  selfDestroy: false,
  animTimingFunction: 'EASE',
  pathTimingFunction: 'LINEAR'
};

Такой подход позволяет применять единый набор параметров к нескольким SVG-объектам без дублирования кода и снижает вероятность расхождения настроек между элементами интерфейса.


Централизация конфигурации

Использование файла опций особенно эффективно в архитектурах, где SVG-анимации являются частью системного слоя интерфейса. Конфигурация может быть сгруппирована по смысловым блокам:

  • анимации логотипов
  • анимации иконок интерфейса
  • декоративные фоновые эффекты
  • интерактивные элементы

Каждая группа может иметь собственный набор параметров, адаптированных под частоту использования и требования к производительности.

Пример группировки:

export const svgAnimationsConfig = {
  headerLogo: {
    type: 'delayed',
    duration: 150,
    selfDestroy: true
  },

  iconHover: {
    type: 'sync',
    duration: 100,
    selfDestroy: false
  },

  backgroundDecor: {
    type: 'oneByOne',
    duration: 300,
    forceRender: false,
    selfDestroy: true
  }
};

Взаимодействие selfDestroy с конфигурацией

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

Такой подход влияет на архитектурные решения:

  • уменьшает необходимость ручного контроля экземпляров
  • упрощает повторное использование SVG-анимаций
  • снижает связанность кода между логикой UI и визуальными эффектами

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


Разделение ответственности в конфигурациях

Файл опций в контексте Vivus часто становится частью более широкой системы управления визуальными эффектами. В таких архитектурах выделяются три уровня:

  • уровень инициализации (создание экземпляра)
  • уровень конфигурации (файл опций)
  • уровень исполнения (runtime-анимация)

Файл опций выступает промежуточным слоем, который позволяет изменять поведение анимации без изменения логики инициализации.


Управление повторным использованием конфигураций

Конфигурационные файлы могут быть построены как наборы шаблонов. Это позволяет:

  • использовать единые параметры для группы SVG
  • минимизировать дублирование кода
  • централизованно изменять поведение анимаций

При этом параметр selfDestroy становится ключевым фактором, определяющим, является ли конфигурация одноразовой или переиспользуемой.

Одноразовые конфигурации обычно сочетаются с:

  • selfDestroy: true
  • короткой длительностью
  • автозапуском

Переиспользуемые конфигурации:

  • selfDestroy: false
  • управляемый старт
  • возможность повторного запуска

Архитектурные последствия выбора selfDestroy

Выбор значения selfDestroy в связке с файлом опций влияет на архитектуру всего слоя анимаций:

  • при агрессивном использовании уничтожения уменьшается нагрузка на память, но увеличивается количество пересозданий
  • при сохранении экземпляров возрастает управляемость, но увеличивается риск накопления неиспользуемых объектов

В сложных интерфейсах баланс между этими подходами определяется характером взаимодействия пользователя с SVG-элементами и частотой повторного запуска анимаций.