timeago.js представляет собой библиотеку для преобразования временных меток в человекочитаемый относительный формат («5 минут назад», «2 дня назад», «только что»). При подключении через HTML ключевым аспектом становится выбор способа загрузки: через CDN, локальный файл или модульную сборку. От корректности подключения зависит доступность глобальных функций и дальнейшая инициализация.
Наиболее простой способ использования — подключение библиотеки напрямую в HTML-документ через CDN. Такой подход не требует сборщиков, установки npm-зависимостей или настройки окружения.
Подключение выполняется через тег <script>,
который загружает UMD-сборку:
<script src="https://unpkg.com/timeago.js"></script>
После подключения библиотека становится доступной в глобальном
объекте timeago.
Ключевые особенности такого способа:
После загрузки можно использовать глобальные методы:
<script>
const node = document.querySelector('#time');
const timeagoInstance = timeago.format(node.getAttribute('datetime'));
</script>
В проектах, где требуется автономность или контроль над зависимостями, используется локальное подключение скрипта.
Структура проекта:
/project
index.html
timeago.min.js
HTML-файл:
<script src="./timeago.min.js"></script>
При таком подходе библиотека также становится доступной через глобальный объект, аналогично CDN-версии.
Преимущества локального подключения:
Расположение <script> влияет на момент доступности
DOM и выполнения кода.
Подключение в <head>:
<head>
<script src="https://unpkg.com/timeago.js"></script>
</head>
При таком варианте важно учитывать, что скрипт может выполниться до загрузки DOM. Это требует использования обработчика события загрузки:
<script>
document.addEventListener('DOMContentLoaded', () => {
const elements = document.querySelectorAll('.time');
elements.forEach(el => {
el.textContent = timeago.format(el.getAttribute('datetime'));
});
});
</script>
Подключение перед закрывающим тегом
</body>:
<body>
<span class="time" datetime="2026-05-26T12:00:00Z"></span>
<script src="https://unpkg.com/timeago.js"></script>
<script>
const elements = document.querySelectorAll('.time');
elements.forEach(el => {
el.textContent = timeago.format(el.getAttribute('datetime'));
});
</script>
</body>
Такой вариант предпочтителен, так как DOM уже гарантированно доступен.
При подключении через <script> библиотека
экспортирует объект, содержащий основные методы форматирования.
Основной метод:
timeago.format(date)
где date может быть:
Date;Пример:
<script>
console.log(timeago.format('2026-05-25T10:00:00Z'));
</script>
HTML-подключение часто комбинируется с data-* атрибутами
для декларативного хранения даты:
<span class="time" data-time="2026-05-25T10:00:00Z"></span>
Обработка:
<script>
const nodes = document.querySelectorAll('[data-time]');
nodes.forEach(node => {
const value = node.getAttribute('data-time');
node.textContent = timeago.format(value);
});
</script>
Такой подход позволяет отделить структуру HTML от логики JavaScript.
При использовании нескольких библиотек или версий важно учитывать глобальное пространство имён.
Если подключаются разные скрипты, возможны конфликты объекта
timeago. Для предотвращения перекрытия используется:
Пример фиксации версии:
<script src="https://unpkg.com/timeago.js@4.0.2"></script>
При динамическом создании элементов важно повторно применять форматирование:
<script>
function renderTimes() {
document.querySelectorAll('.time').forEach(el => {
el.textContent = timeago.format(el.dataset.time);
});
}
document.addEventListener('DOMContentLoaded', renderTimes);
</script>
При добавлении новых элементов в DOM после загрузки страницы требуется повторный вызов функции обработки.
HTML-подключение не предполагает автоматического отслеживания изменений DOM. Поэтому при изменении содержимого необходимо явно обновлять значения:
const newElement = document.createElement('span');
newElement.className = 'time';
newElement.dataset.time = new Date().toISOString();
document.body.appendChild(newElement);
newElement.textContent = timeago.format(newElement.dataset.time);
При подключении через script можно дополнительно подключать локализации:
<script src="https://unpkg.com/timeago.js"></script>
<script src="https://unpkg.com/timeago.js/dist/lang/ru.js"></script>
После этого локаль может быть применена:
timeago.register('ru', locale);
timeago.format('2026-05-25T10:00:00Z', 'ru');
При использовании HTML-подключения часто встречаются следующие проблемы:
timeago.format до загрузки
скрипта;datetime или
data-time;<head> без обработки
DOMContentLoaded;Корректная последовательность подключения и строгий контроль DOM-элементов исключают большую часть этих ошибок.