Lottie Web распространяется как JavaScript-библиотека, которую можно подключать несколькими способами: через менеджер пакетов, прямым подключением файлов или использованием CDN. Каждый подход отличается структурой проекта, уровнем контроля над зависимостями и удобством обновления.
В основе локального подключения лежит идея хранения всех необходимых файлов внутри проекта без зависимости от внешних серверов. Такой подход снижает риски, связанные с недоступностью CDN, и позволяет точно фиксировать версию библиотеки.
Наиболее распространённый способ интеграции — использование npm.
Библиотека устанавливается как зависимость проекта и попадает в
директорию node_modules.
npm install lottie-web
После установки становится доступен основной модуль, который можно импортировать в коде:
import lottie from "lottie-web";
или в CommonJS-окружении:
const lottie = require("lottie-web");
Структура пакета включает минимизированную сборку, исходные модули и дополнительные файлы для разных сценариев использования. В большинстве современных сборщиков (Webpack, Vite, Rollup) автоматически выбирается оптимальная версия.
При отсутствии сборщика используется прямое подключение
JavaScript-файла. В этом случае библиотека скачивается вручную из
репозитория или берётся из папки build установленного
пакета.
Типичный путь внутри npm-пакета:
node_modules/lottie-web/build/player/lottie.min.js
Файл можно скопировать в структуру проекта:
/assets/libs/lottie/lottie.min.js
И подключить через тег script:
<script src="assets/libs/lottie/lottie.min.js"></script>
После подключения объект lottie становится доступным в
глобальной области видимости.
Альтернативный вариант — использование CDN-версии. Он подходит для быстрых прототипов и простых страниц без локальной сборки.
<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js"></script>
CDN предоставляет уже собранный и минимизированный файл. Важно учитывать, что версия фиксируется явно, поскольку автоматическое обновление может привести к несовместимости поведения анимаций.
Внутри дистрибутива Lottie Web присутствуют несколько вариантов сборок:
build/
├── player/
│ ├── lottie.js
│ ├── lottie.min.js
├── lottie_light.js
├── lottie_svg.js
Основные различия заключаются в поддерживаемых рендерах и размере файла.
lottie.js — полная версия с поддержкой всех
возможностейlottie.min.js — минимизированная версия для
продакшенаlottie_light.js — облегчённая сборкаlottie_svg.js — версия, оптимизированная для
SVG-рендераВыбор сборки влияет на производительность и функциональность, особенно в проектах с большим количеством анимаций.
Lottie Web работает с анимациями в формате JSON, экспортируемыми из Adobe After Effects через Bodymovin. Эти файлы также обычно хранятся локально.
Рекомендуемая структура проекта:
/assets
/lottie
animation1.json
animation2.json
Загрузка анимации осуществляется через путь к локальному файлу:
lottie.loadAnimation({
container: document.getElementById("animation"),
renderer: "svg",
loop: true,
autoplay: true,
path: "assets/lottie/animation1.json"
});
Использование локального JSON позволяет полностью исключить сетевые зависимости во время исполнения.
В проектах без Webpack или Vite структура обычно строится вокруг простого HTML:
/project
index.html
/js
lottie.min.js
app.js
/assets
animation.json
Подключение выполняется последовательно:
<script src="js/lottie.min.js"></script>
<script src="js/app.js"></script>
В app.js уже доступен глобальный объект:
lottie.loadAnimation({
container: document.querySelector("#anim"),
renderer: "svg",
loop: true,
autoplay: true,
path: "assets/animation.json"
});
При локальном подключении важно учитывать несколько технических аспектов, связанных с поведением браузера и файловой системы.
Открытие HTML напрямую из файловой системы может блокировать загрузку
JSON через fetch. Браузеры часто запрещают такие запросы из
соображений безопасности.
В результате анимация может не загружаться, несмотря на корректный путь. Это связано не с библиотекой, а с политикой CORS.
При локальном использовании HTTP-сервера структура остаётся идентичной, но доступ к ресурсам становится стабильным. Любой статический сервер подходит для корректной работы загрузки JSON.
При локальной разработке браузер может кэшировать как JavaScript-библиотеку, так и JSON-анимации. Это влияет на отображение изменений.
Поскольку Lottie Web активно используется в UI-анимациях, обновление файлов требует контроля кэша, особенно при итеративной разработке.
Локальное подключение часто используется на этапе разработки, тогда как в продакшене применяется оптимизированная сборка.
В типичной схеме:
node_modulesdistТакая структура позволяет управлять производительностью и размером итоговой поставки.
Файл lottie.min.js представляет собой сжатую версию
библиотеки. Он уменьшает размер загрузки за счёт удаления пробелов,
сокращения имён переменных и оптимизации структуры кода.
При локальном подключении часто используется именно эта версия, чтобы снизить нагрузку на клиентскую часть.
Разные версии Lottie Web могут отличаться API и внутренней реализацией рендеринга. При локальном хранении фиксированная версия становится частью проекта, что исключает неожиданные изменения поведения.
Версионная структура npm-пакета позволяет явно контролировать:
При сложных интерфейсах может потребоваться подключение нескольких независимых анимаций. Локальная версия библиотеки позволяет создавать изолированные экземпляры без конфликтов глобальных зависимостей.
const anim1 = lottie.loadAnimation({
container: document.querySelector("#a1"),
renderer: "svg",
loop: true,
autoplay: true,
path: "assets/a1.json"
});
const anim2 = lottie.loadAnimation({
container: document.querySelector("#a2"),
renderer: "svg",
loop: false,
autoplay: true,
path: "assets/a2.json"
});
Каждый экземпляр управляет собственным состоянием и ресурсами рендеринга.
При масштабировании проекта целесообразно выделять отдельный слой для сторонних библиотек:
/vendor
lottie/
lottie.min.js
/assets
/js
/css
Такой подход упрощает обновление и контроль версий, особенно если библиотека используется без пакетного менеджера.
При использовании модульных систем локальное подключение превращается в импорт из локального пакета. Сборщик сам оптимизирует финальную сборку.
import lottie from "../vendor/lottie/lottie.min.js";
В этом случае библиотека становится частью графа зависимостей и может быть подвергнута tree-shaking или дополнительной оптимизации.
В некоторых сценариях, например в WebView или iframe, локально подключённая версия работает автономно. Это особенно важно для приложений, где доступ к внешним ресурсам ограничен.
Lottie Web в таких условиях сохраняет способность воспроизводить анимации полностью офлайн, при условии локального хранения JSON и скриптов.
При локальной интеграции важно учитывать последовательность загрузки:
lottie.min.jsНарушение порядка приводит к ошибкам инициализации, поскольку библиотека не находит целевые DOM-элементы.
Локальная структура требует строгого соблюдения относительных путей к ресурсам. Ошибки в путях являются одной из самых частых причин отсутствия анимации.
path: "./assets/lottie/animation.json"
Даже незначительное изменение директории влияет на доступность JSON-файлов.
Полностью локальная конфигурация позволяет использовать анимации без подключения к интернету. Это достигается за счёт хранения:
Такой подход часто применяется в интерактивных киосках, мобильных приложениях через WebView и внутренних корпоративных системах.