Использование CDN (Content Delivery Network) позволяет быстро подключить библиотеку Universal Router без установки зависимостей через пакетные менеджеры. Такой подход удобен для прототипирования, тестирования и разработки небольших приложений.
CDN предоставляет готовую сборку библиотеки, размещённую на удалённом
сервере. Подключение осуществляется через тег
<script>, после чего API становится доступным в
глобальной области видимости.
Ключевые особенности:
Наиболее распространённые CDN-сервисы:
Они автоматически подтягивают пакеты из npm-репозиториев и предоставляют доступ к различным версиям библиотек.
<script>Пример подключения Universal Router через jsDelivr:
<script src="https://cdn.jsdelivr.net/npm/@uniswap/universal-router@latest/dist/index.min.js"></script>
Для фиксации версии рекомендуется указывать конкретный номер:
<script src="https://cdn.jsdelivr.net/npm/@uniswap/universal-router@1.2.0/dist/index.min.js"></script>
Это предотвращает неожиданные изменения API при обновлении библиотеки.
После подключения библиотека обычно становится доступной через глобальный объект. В зависимости от сборки имя может отличаться.
Пример проверки:
console.log(window.UniversalRouter);
Если объект определён — библиотека успешно загружена.
Работа с Universal Router через CDN чаще всего предполагает использование уже скомпилированного интерфейса.
Пример инициализации:
const router = new UniversalRouter({
provider: window.ethereum
});
Далее можно вызывать методы маршрутизации транзакций:
router.execute({
commands: [...],
inputs: [...]
});
Для повышения производительности страницы рекомендуется использовать
атрибуты defer или async.
<script defer src="https://cdn.jsdelivr.net/npm/@uniswap/universal-router@1.2.0/dist/index.min.js"></script>
Различия:
async — загружает и выполняет скрипт сразу после
загрузкиdefer — откладывает выполнение до полной загрузки
HTMLДля библиотек чаще предпочтителен defer.
Universal Router может зависеть от других библиотек, например:
Их также необходимо подключать через CDN:
<script src="https://cdn.jsdelivr.net/npm/ethers@6.0.0/dist/ethers.umd.min.js"></script>
Порядок подключения имеет значение:
CDN-загрузка может завершиться неудачно. Для отслеживания ошибок используется обработчик:
<script src="..." oner ror="handleError()"></script>
Пример:
function handleError() {
console.error('Не удалось загрузить Universal Router');
}
CDN автоматически использует:
Это снижает задержки и ускоряет загрузку.
Однако при обновлении версии может потребоваться очистка кэша:
location.reload(true);
Использование CDN имеет ряд ограничений:
latest версии<!DOCTYPE html>
<html>
<head>
<title>Universal Router CDN</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/ethers@6.0.0/dist/ethers.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@uniswap/universal-router@1.2.0/dist/index.min.js"></script>
<script>
async function init() {
if (!window.ethereum) {
console.error('MetaMask не найден');
return;
}
const provider = new ethers.BrowserProvider(window.ethereum);
const router = new UniversalRouter({
provider: provider
});
console.log('Router инициализирован:', router);
}
init();
</script>
</body>
</html>
Подход оправдан в следующих случаях:
Для production-решений чаще применяется установка через npm с последующей сборкой проекта.