up.reload — это ключевой инструмент библиотеки Unpoly,
предназначенный для обновления частей страницы или всей страницы без
полной перезагрузки. Она позволяет динамически подгружать новый HTML и
интегрировать его в текущий DOM, сохраняя состояние интерфейса и ускоряя
работу веб-приложения.
up.reload([target], [options])
Параметры:
target (необязательный) — CSS-селектор или
DOM-элемент, который будет обновлён. Если не указан, обновляется вся
страница.options (необязательный) — объект с
настройками поведения обновления.Пример обновления всего документа:
up.reload();
Пример обновления конкретного блока:
up.reload('#comments');
options и его
свойстваОбъект options предоставляет гибкий контроль над
поведением функции:
url — URL, с которого будет
загружен новый HTML. Если не указан, используется текущий адрес
страницы.
target — переопределяет
CSS-селектор блока для обновления.
cache — логическое значение. Если
true, результат может быть взят из кэша, если
false — всегда запрашивается свежий контент.
scroll — управляет прокруткой после
обновления. Может принимать:
false — не скроллить,true — скролл к началу документа,focus — фокус на элемент после
обновления. Может быть селектором или false.
method — HTTP-метод запроса
(GET, POST и т.д.).
params — объект с параметрами
запроса.
Пример использования:
up.reload('#notifications', {
url: '/notifications',
cache: false,
scroll: '#notifications'
});
Unpoly позволяет загружать только часть документа, избегая полной перезагрузки. Это особенно полезно для:
Пример обновления нескольких блоков:
up.reload(['#sidebar', '#main-content']);
При передаче массива селекторов Unpoly обновляет каждый блок
отдельно, используя один и тот же запрос, если указана общая
url.
up:content:loadedПосле обновления контента часто требуется выполнить дополнительный
JavaScript. Для этого Unpoly предоставляет событие
up:content:loaded:
document.addEventListener('up:content:loaded', (event) => {
if (event.target.matches('#comments')) {
console.log('Комментарии обновлены');
}
});
event.target указывает на обновлённый элемент, что
позволяет безопасно выполнять скрипты только для изменённых частей
DOM.
По умолчанию Unpoly использует кэширование для ускорения повторных загрузок блоков. Кэш учитывает URL и параметры запроса.
Пример отключения кэша:
up.reload('#profile', { cache: false });
Для динамического контента, который изменяется часто (например, лента новостей или уведомления), кэширование рекомендуется отключать.
up.reload поддерживает передачу дополнительных
параметров через объект params:
up.reload('#search-results', {
url: '/search',
params: { query: 'Unpoly', page: 2 }
});
Эти параметры автоматически сериализуются в query string при GET-запросе или в тело запроса при POST.
Unpoly предоставляет возможность использовать анимации при обновлении
элементов. Для этого в options можно указать:
animation — название предопределённой
анимации (fade, slide, replace, и
др.).duration — длительность анимации в
миллисекундах.Пример:
up.reload('#main-content', {
animation: 'fade',
duration: 300
});
Библиотека автоматически добавляет плавное исчезновение старого контента и появление нового.
up.reload возвращает промис, что позволяет обрабатывать
успешное обновление или ошибки:
up.reload('#notifications')
.then(() => console.log('Обновление выполнено'))
.catch(() => console.log('Ошибка при обновлении'));
Ошибки могут возникать из-за сетевых проблем, некорректного HTML или недоступного URL.
up:fragment:loaded для
тонкой настройки поведения отдельных фрагментов.up.reload является универсальным инструментом для
динамического обновления страниц в Unpoly, обеспечивая скорость,
плавность и контроль над частями DOM без полной перезагрузки.