Параметр selfDestroy управляет жизненным циклом
экземпляра анимации SVG и определяет, будет ли библиотека автоматически
освобождать ресурсы после завершения отрисовки. В контексте SVG-анимации
это особенно важно, поскольку каждый экземпляр Vivus создаёт внутренние
структуры для управления путями, состоянием анимации и таймингом.
При значении selfDestroy: true экземпляр удаляется из
памяти после завершения анимации. Это означает, что:
При значении selfDestroy: false экземпляр сохраняется,
что позволяет:
Ключевое различие заключается в модели управления памятью: автоматическое уничтожение ориентировано на одноразовые анимации, тогда как сохранение экземпляра — на интерактивные или повторяющиеся сценарии.
Механизм работы selfDestroy активируется строго после
завершения всех этапов отрисовки SVG-путей. Внутренне это связано с
финальным состоянием таймера и завершением последовательности
stroke-dashoffset.
При включённом selfDestroy:
При отключённом selfDestroy:
play,
reset, stopВ интерфейсах с большим количеством SVG-анимаций значение
selfDestroy влияет на производительность и управляемость
памяти.
Использование selfDestroy: true целесообразно в
случаях:
Использование selfDestroy: false оправдано при:
При большом количестве SVG-элементов сохранение экземпляров без необходимости может увеличивать потребление памяти, так как каждый объект продолжает удерживать ссылки на DOM и внутренние структуры расчёта пути.
Файл опций представляет собой внешний или модульный способ хранения конфигурации анимаций, позволяющий отделить логику инициализации от описания параметров поведения 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
становится частью декларативной модели поведения анимации. Это позволяет
задавать жизненный цикл экземпляра на уровне конфигурации, а не на
уровне логики создания объекта.
Такой подход влияет на архитектурные решения:
При этом важно учитывать, что автоматическое уничтожение экземпляра делает невозможным повторное управление тем же объектом без его пересоздания, что напрямую влияет на стратегию работы с интерактивными интерфейсами.
Файл опций в контексте Vivus часто становится частью более широкой системы управления визуальными эффектами. В таких архитектурах выделяются три уровня:
Файл опций выступает промежуточным слоем, который позволяет изменять поведение анимации без изменения логики инициализации.
Конфигурационные файлы могут быть построены как наборы шаблонов. Это позволяет:
При этом параметр selfDestroy становится ключевым
фактором, определяющим, является ли конфигурация одноразовой или
переиспользуемой.
Одноразовые конфигурации обычно сочетаются с:
selfDestroy: trueПереиспользуемые конфигурации:
selfDestroy: falseВыбор значения selfDestroy в связке с файлом опций
влияет на архитектуру всего слоя анимаций:
В сложных интерфейсах баланс между этими подходами определяется характером взаимодействия пользователя с SVG-элементами и частотой повторного запуска анимаций.