Подключение через CDN основано на загрузке готовых файлов библиотеки напрямую с внешнего сервера, без установки через npm или сборщики. Такой способ особенно полезен в прототипах, небольших проектах и случаях, когда необходимо быстро подключить date picker без настройки сборочной системы.
Библиотека Pikaday состоит из JavaScript-файла и, при необходимости, CSS-стилей. Дополнительно может использоваться Moment.js для расширенной работы с датами, но это не обязательная зависимость.
Минимальная интеграция включает подключение скрипта Pikaday и таблицы стилей.
Один из наиболее распространённых CDN-провайдеров — jsDelivr:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">
<script src="https://cdn.jsdelivr.net/npm/pikaday/pikaday.js"></script>
Порядок подключения имеет значение: стили должны быть подключены до инициализации компонента, а JavaScript — после загрузки DOM или в конце страницы.
Помимо jsDelivr, доступны другие распространённые CDN:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.8.2/css/pikaday.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.8.2/pikaday.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/pikaday/css/pikaday.css">
<script src="https://unpkg.com/pikaday/pikaday.js"></script>
Использование конкретной версии через CDN рекомендуется для стабильности проекта, так как автоматическое обновление может привести к изменению поведения библиотеки.
Pikaday может работать как с нативным Date, так и с
Moment.js. При необходимости расширенного форматирования дат
подключается дополнительная библиотека:
<script src="https://cdn.jsdelivr.net/npm/moment/min/moment.min.js"></script>
Важно учитывать порядок загрузки: Moment.js должен быть подключён до Pikaday, иначе библиотека не обнаружит его и переключится на стандартный режим работы с датами.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Pikaday CDN Example</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">
</head>
<body>
<input type="text" id="datepicker">
<script src="https://cdn.jsdelivr.net/npm/moment/min/moment.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/pikaday/pikaday.js"></script>
<script>
var picker = new Pikaday({
field: document.getElementById('datepicker'),
format: 'DD.MM.YYYY',
firstDay: 1,
minDate: new Date(2000, 0, 1),
maxDate: new Date(2030, 11, 31)
});
</script>
</body>
</html>
При подключении через CDN важно учитывать момент инициализации. Если скрипт выполняется до появления элемента в DOM, будет возникать ошибка.
Один из стандартных подходов — размещение скрипта в конце
body:
<script>
var picker = new Pikaday({
field: document.getElementById('datepicker')
});
</script>
Альтернативный вариант — ожидание события загрузки DOM:
<script>
document.addEventListener('DOMContentLoaded', function () {
var picker = new Pikaday({
field: document.getElementById('datepicker')
});
});
</script>
Использование CDN позволяет явно фиксировать версию библиотеки. Это предотвращает неожиданные изменения API или поведения.
Пример фиксированной версии:
<script src="https://cdn.jsdelivr.net/npm/pikaday@1.8.2/pikaday.js"></script>
Стили также должны соответствовать той же версии:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pikaday@1.8.2/css/pikaday.css">
CDN использует кэширование на уровне браузера и глобальных серверов доставки контента. Это означает:
При разработке критичных систем иногда применяется локальное зеркалирование файлов, даже при использовании CDN в основной конфигурации.
Подключение через CDN подходит для классических HTML-проектов и серверно-рендеренных страниц. В современных SPA-фреймворках (React, Vue, Angular) чаще используется установка через пакетные менеджеры, однако CDN остаётся удобным инструментом для: