Snap.svg распространяется как самостоятельная JavaScript-библиотека, не требующая сложной сборки. Существует несколько вариантов подключения в зависимости от архитектуры проекта и используемых инструментов.
Самый быстрый способ начать работу — подключение библиотеки через CDN. В этом случае файл загружается с удалённого сервера и не требует хранения в проекте.
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
Ключевые особенности:
Этот способ удобен для прототипирования и небольших проектов.
Для проектов с повышенными требованиями к стабильности и автономности используется локальная копия библиотеки.
Скачать архив с официального репозитория
Распаковать в директорию проекта, например:
/js/libs/snap.svg.min.jsПодключить файл в HTML:
<script src="js/libs/snap.svg.min.js"></script>
Преимущества:
В современных проектах чаще используется управление зависимостями через npm или yarn.
npm install snapsvg
yarn add snapsvg
После установки библиотека подключается в коде:
import Snap from "snapsvg";
Особенности:
После добавления библиотеки необходимо правильно встроить её в HTML-документ.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Snap.svg</title>
</head>
<body>
<svg id="canvas" width="600" height="400"></svg>
<script src="snap.svg.min.js"></script>
<script src="app.js"></script>
</body>
</html>
Ключевые моменты:
После подключения библиотеки создаётся экземпляр Snap, который связывается с SVG-элементом.
var s = Snap("#canvas");
Варианты инициализации:
var s = Snap("#canvas");
Используется существующий SVG-элемент.
var s = Snap(600, 400);
document.body.appendChild(s.node);
Создаётся новый SVG-элемент с заданными размерами.
Простейший способ убедиться в работоспособности библиотеки — создать примитивный объект.
var s = Snap("#canvas");
var circle = s.circle(100, 100, 50);
circle.attr({
fill: "#3498db"
});
Если в браузере отображается круг, подключение выполнено корректно.
Правильный порядок подключения скриптов критически важен:
Неверный порядок приведёт к ошибке:
Snap is not defined
Рекомендуется размещать скрипты перед закрывающим тегом
</body> для ускорения загрузки страницы.
При использовании сборщиков (Webpack, Vite, Parcel) важно учитывать:
const Snap = require("snapsvg");
Иногда проще подключить библиотеку через <script>
и использовать глобальную переменную Snap.
<script src="snap.svg.min.js"></script>
Если файл лежит в другой директории — библиотека не загрузится.
Snap.svg может конфликтовать с другими библиотеками, работающими с SVG или DOM.
Решение:
Некоторые CDN могут содержать устаревшие версии. Это приводит к отсутствию нужного функционала.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<svg id="canvas" width="500" height="300"></svg>
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
<script>
var s = Snap("#canvas");
var rect = s.rect(50, 50, 200, 100);
rect.attr({
fill: "#e74c3c",
stroke: "#2c3e50",
strokeWidth: 3
});
</script>
</body>
</html>
После успешного подключения становятся доступны основные возможности Snap.svg:
Инициализация и корректное подключение являются фундаментом для всех последующих операций с векторной графикой.