Библиотека Lottie Web исторически развивалась как JavaScript-реализация рендеринга анимаций After Effects через JSON-формат Bodymovin. Архитектура API сохраняет ядро, но между версиями происходили существенные изменения в конфигурации и поведении ключевых методов, особенно в области инициализации, управления проигрыванием и работы с рендерами.
lottie.loadAnimation
и структура конфигурацииБазовый метод загрузки анимации остаётся центральным элементом API:
lottie.loadAnimation(params)
В ранних версиях конфигурационный объект был минималистичным и допускал неполную типизацию параметров. В более поздних версиях структура стала более строгой, а некоторые поля получили расширенное поведение.
1. renderer
Ранее поддерживались значения:
"svg""canvas""html"В новых версиях поведение унифицировано:
"svg" стал наиболее стабильным и функционально
полным"canvas" получил оптимизацию производительности, но
ограничение по сложным эффектам"html" фактически считается устаревшим и используется
редко2. animationData vs path
Изначально допускалось неявное смешивание загрузки по URL и через JSON.
Современная модель строго разделяет:
animationData — уже загруженный JSONpath — URL к JSON-файлуОдновременное использование считается конфликтным поведением,
приоритет зависит от версии, но в актуальной реализации предпочтение
отдаётся animationData.
3. container
Ранее контейнер мог быть строковым селектором. Позднее введена строгая рекомендация использовать DOM-элемент:
container: document.getElementById('app')
Строковые селекторы стали нестабильным поведением в некоторых окружениях.
4. loop и autoplay
Изначально:
loop: true/falseautoplay: true/falseПозднее добавлена поддержка расширенных значений:
loop: number — количество цикловloop: boolean | number | object (в некоторых
сборках)Поведение autoplay стало зависеть от внутреннего
состояния инстанса и очереди событий загрузки.
Основные методы сохраняются, но их поведение менялось между версиями:
play()pause()stop()Ранние версии:
Поздние версии:
playSegmentsanimation.playSegments([10, 50], true)
Изменения между версиями:
goToAndPlay и
goToAndStopСигнатуры:
goToAndPlay(value, isFrame)
goToAndStop(value, isFrame)
Изменения:
value интерпретировался неоднозначно
(frame/time)isFramesetSpeedРанее скорость применялась только к текущему проигрыванию.
Позже:
play() без переинициализацииsetDirectionПоведение изменилось с “моментального разворота” на:
addEventListener и
события анимацииОсновные события:
enterFrameloopCompletecompletesegmentStart1. enterFrame
Ранее событие могло триггериться нерегулярно при низкой производительности.
Позднее:
2. DOMLoaded
В старых версиях использовалось как основной сигнал готовности.
В новых версиях:
loaded_images и
DOMLoaded (в зависимости от рендера)3. complete
Поведение изменено для loop-режима:
SVG стал основным и наиболее стабильным рендерером.
Изменения:
<path> и
<mask>Canvas-движок подвергся нескольким переработкам:
Изменение API практически не затронуло внешний интерфейс, но повлияло на поведение визуализации.
В ранних версиях использовался для fallback-рендеринга через DOM-элементы.
Позднее:
assetsPathРанее использовался как простой префикс для загрузки изображений.
Позднее:
imagePreloaderИзменено поведение:
destroy()Изменения:
ранние версии не полностью освобождали память (особенно в canvas)
поздние версии добавили:
resize()Поведение:
setSubframeИзменения:
lottieРанее:
window.lottie
Позже:
import lottie from 'lottie-web'
setVolume — отсутствует (звук не поддерживается по
архитектуре)addEventListener без namespace — заменён на строгую
подписку событийВ ранних версиях отсутствовала полноценная типизация.
Позднее добавлены:
AnimationItemRendererTypeILottieConfigИзменения:
loop и autoplaycontainer в конфигурацииРанее:
Позднее:
С каждой версией изменялась внутренняя архитектура: