Библиотека Interact.js распространяется как JavaScript-файл, который может быть подключён напрямую в веб-страницу без установки через менеджеры пакетов. Один из самых простых способов — использование CDN (Content Delivery Network). В этом случае файл библиотеки загружается с удалённого сервера и автоматически кэшируется браузером.
CDN-подключение удобно для:
CDN (Content Delivery Network) — сеть серверов, распределённых по различным географическим регионам. Такие серверы хранят копии популярных файлов и отдают их пользователям с ближайшего узла сети.
Преимущества CDN:
Для JavaScript-библиотек CDN обычно предоставляет готовые ссылки на конкретные версии файлов.
Библиотека Interact.js доступна на нескольких крупных CDN-платформах.
Один из наиболее быстрых и популярных CDN.
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
Особенности:
Подключение конкретной версии:
<script src="https://cdn.jsdelivr.net/npm/interactjs@1.10.17/dist/interact.min.js"></script>
Фиксация версии важна для стабильности проекта, так как обновления библиотеки могут изменять API.
CDN, напрямую связанный с репозиториями npm.
<script src="https://unpkg.com/interactjs/dist/interact.min.js"></script>
Подключение конкретной версии:
<script src="https://unpkg.com/interactjs@1.10.17/dist/interact.min.js"></script>
unpkg автоматически отдаёт файлы из npm-пакета без дополнительной конфигурации.
CDN, поддерживаемый сообществом и компанией Cloudflare.
<script src="https://cdnjs.cloudflare.com/ajax/libs/interact.js/1.10.17/interact.min.js"></script>
Особенности:
Простейшая структура страницы с CDN-подключением библиотеки:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Interact.js Example</title>
</head>
<body>
<div id="box">Перетащи меня</div>
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<script>
interact('#box').draggable({
listeners: {
move (event) {
const target = event.target
const x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx
const y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy
target.style.transform = `translate(${x}px, ${y}px)`
target.setAttribute('data-x', x)
target.setAttribute('data-y', y)
}
}
})
</script>
</body>
</html>
В этом примере:
interact();<script>Файл библиотеки можно подключать в двух основных местах HTML-документа.
<body>Наиболее распространённый способ:
<body>
<div class="item"></div>
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<script src="app.js"></script>
</body>
Преимущества:
<head> с
атрибутом defer<head>
<script defer src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<script defer src="app.js"></script>
</head>
Атрибут defer позволяет:
После загрузки Interact.js в глобальной области видимости появляется
функция interact.
Проверка:
console.log(typeof interact)
Если библиотека подключена корректно, в консоли будет выведено:
function
Можно также проверить версию:
console.log(interact.version)
При подключении через CDN возможно использование механизма SRI — проверки целостности файла.
Пример:
<script
src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"
integrity="sha384-XXXXXXXX"
crossorigin="anonymous">
</script>
SRI позволяет браузеру:
Это повышает безопасность подключения сторонних ресурсов.
Interact.js распространяется в двух вариантах:
| Версия | Назначение |
|---|---|
| interact.js | обычная версия для разработки |
| interact.min.js | минифицированная версия для продакшена |
Минифицированная версия:
Пример подключения:
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
Современные версии Interact.js объединяют большинство возможностей в одном файле. Однако при работе с CDN важно убедиться, что используется полная сборка библиотеки, содержащая:
Полный файл обычно располагается по пути:
dist/interact.min.js
Если используется несколько скриптов, порядок имеет значение.
Правильная последовательность:
<script src="interact.min.js"></script>
<script src="app.js"></script>
Причина:
Неправильный порядок приведёт к ошибке:
ReferenceError: interact is not defined
CDN-подключение особенно удобно при:
В таких условиях не требуется:
Достаточно добавить один тег <script>.
Некоторые корпоративные сети или страны могут ограничивать доступ к определённым CDN.
Решение:
Если библиотека обновилась, а код написан под старую версию, возможны ошибки.
Рекомендуемая практика:
Пример:
@1.10.17
Если соединение недоступно, CDN-файл не загрузится.
Иногда используется резервное подключение:
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<script>
if (typeof interact === 'undefined') {
document.write('<script src="/js/interact.min.js"><\/script>');
}
</script>
Такой подход обеспечивает fallback-загрузку локальной копии библиотеки.
Даже при CDN-подключении обычно создаётся структура проекта:
project/
│
├── index.html
├── css/
│ └── styles.css
└── js/
└── app.js
Подключение:
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<script src="js/app.js"></script>
Таким образом:
В некоторых случаях можно использовать атрибут
async:
<script async src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
Однако при использовании async необходимо учитывать:
Поэтому чаще используется defer или размещение скриптов
в конце body.
Если библиотека подключена через CDN и скрипт выполняется после загрузки DOM, код можно писать напрямую:
interact('.draggable').draggable()
Если скрипт расположен в <head> без
defer, необходимо дождаться загрузки DOM:
document.addEventListener('DOMContentLoaded', () => {
interact('.draggable').draggable()
})
Это предотвращает ошибки, связанные с отсутствием элементов в DOM.
Браузеры активно кэшируют популярные CDN-файлы. Если пользователь ранее посещал сайт, использующий ту же версию Interact.js, файл может быть уже сохранён локально.
Преимущества:
Несмотря на удобство, существуют ситуации, когда предпочтительнее локальное подключение:
В таких случаях библиотека устанавливается через npm и подключается как модуль.
<script> с ссылкой на
interact.min.js;interact() для
настройки взаимодействий элементов.CDN-подключение позволяет начать использование Interact.js буквально с нескольких строк HTML, не требуя дополнительных инструментов сборки и конфигурации среды разработки.