Использование CDN позволяет подключать библиотеку напрямую в браузере без сборщиков, установки npm-пакетов и конфигурации модулей. Такой способ удобен для прототипирования, небольших проектов, учебных задач и ситуаций, когда необходимо быстро подключить функциональность работы с датами.
CDN (Content Delivery Network) представляет собой распределённую сеть серверов, через которую доставляются статические ресурсы: JavaScript-библиотеки, стили, изображения. При подключении через CDN браузер загружает файл библиотеки по URL и делает её доступной в глобальной области видимости.
Наиболее простой способ использования Day.js в браузере — подключение
через тег <script>.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
После загрузки скрипта становится доступен глобальный объект
dayjs.
<script>
const now = dayjs();
console.log(now.format());
</script>
Основной момент: библиотека работает без импортов, напрямую через глобальную переменную.
Существует несколько популярных CDN-провайдеров, каждый из которых предоставляет доступ к библиотеке.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
Особенности:
<script src="https://unpkg.com/dayjs@1/dayjs.min.js"></script>
Особенности:
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.10/dayjs.min.js"></script>
Особенности:
После подключения через CDN библиотека доступна через
dayjs.
<script>
const date = dayjs('2026-05-22');
console.log(date.format('YYYY-MM-DD'));
</script>
Создание объекта даты происходит через вызов функции
dayjs(). В отличие от нативного Date,
результат всегда является объектом библиотеки с методами форматирования
и преобразования.
Одной из ключевых возможностей является форматирование.
<script>
const date = dayjs();
console.log(date.format('YYYY-MM-DD'));
console.log(date.format('DD.MM.YYYY'));
console.log(date.format('HH:mm:ss'));
</script>
Шаблоны форматирования:
YYYY — год;MM — месяц;DD — день;HH — часы;mm — минуты;ss — секунды.Для отображения относительных дат требуется подключение дополнительного плагина.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/relativeTime.js"></script>
Инициализация плагина:
<script>
dayjs.extend(dayjs_plugin_relativeTime);
const date = dayjs().subtract(3, 'day');
console.log(date.fromNow());
</script>
После подключения становится доступна работа с выражениями вида:
Day.js поддерживает локализацию, но по умолчанию используется английская локаль. Для изменения языка подключается дополнительный файл.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/locale/ru.js"></script>
Активация локали:
<script>
dayjs.locale('ru');
console.log(dayjs().format('DD MMMM YYYY'));
</script>
После этого месяцы и форматы отображаются на русском языке.
CDN позволяет подключать плагины отдельно, что делает библиотеку модульной даже в браузере.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
Использование:
<script>
dayjs.extend(dayjs_plugin_utc);
const utcDate = dayjs().utc();
console.log(utcDate.format());
</script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/timezone.js"></script>
Использование:
<script>
dayjs.extend(dayjs_plugin_utc);
dayjs.extend(dayjs_plugin_timezone);
const ny = dayjs().tz('America/New_York');
console.log(ny.format());
</script>
При использовании CDN важно соблюдать порядок загрузки:
Пример корректной структуры:
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/relativeTime.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/locale/ru.js"></script>
<script>
dayjs.extend(dayjs_plugin_utc);
dayjs.extend(dayjs_plugin_relativeTime);
dayjs.locale('ru');
console.log(dayjs().utc().fromNow());
</script>
CDN позволяет фиксировать версию библиотеки для предотвращения неожиданных изменений.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js"></script>
Использование конкретной версии обеспечивает:
Обычно CDN предоставляет два варианта файла:
dayjs.min.js — сжатый вариант;dayjs.js — читаемый исходный вариант.Пример:
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.js"></script>
В продакшене предпочтительна минифицированная версия:
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
При использовании CDN библиотека работает в глобальном контексте, что влияет на архитектуру:
При этом сохраняется полная функциональность, аналогичная модульному использованию.
CDN-версия Day.js поддерживает все современные браузеры:
Для старых браузеров может потребоваться транспиляция окружения, но сама библиотека ориентирована на современный JavaScript и не требует сложных полифилов.
CDN-подключение особенно эффективно в проектах без сборщика:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script>
document.body.innerText = dayjs().format('YYYY-MM-DD HH:mm');
</script>
</body>
</html>
Такой подход позволяет внедрять функциональность работы с датами без дополнительных инструментов.
Часто встречаются следующие проблемы:
1. Использование плагина до его загрузки
<script>
dayjs.extend(dayjs_plugin_relativeTime); // ошибка, если скрипт не подключён
</script>
2. Нарушение порядка подключения Плагины должны идти после основной библиотеки.
3. Отсутствие extend() Плагин подключён, но не активирован.
dayjs.extend(dayjs_plugin_utc);
Оптимальная схема CDN-подключения включает:
<script src="https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/timezone.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/locale/ru.js"></script>
<script>
dayjs.extend(dayjs_plugin_utc);
dayjs.extend(dayjs_plugin_timezone);
dayjs.locale('ru');
console.log(dayjs().tz('Europe/Moscow').format('DD MMMM YYYY'));
</script>