Unpoly — это современная JavaScript-библиотека, обеспечивающая плавную подгрузку страниц без полной перезагрузки. Центральным элементом работы с Unpoly являются глобальные настройки, позволяющие настраивать поведение библиотеки на уровне всего приложения. Эти настройки определяют, как выполняются запросы, как обрабатываются ответы и как происходит управление историей браузера.
Глобальные настройки задаются через объект
up.setDefaults. Этот объект позволяет указать поведение по
умолчанию для всех последующих действий Unpoly, таких как переходы по
ссылкам или отправка форм.
up.setDefaults({
animation: 'fade', // анимация перехода
cache: true, // использование кэша
method: 'GET', // HTTP-метод по умолчанию
focus: true // автофокус на первый элемент после загрузки
});
Ключевые моменты:
animation — задает тип анимации при замене контента.
Поддерживаются значения 'fade', 'slide',
'none' и пользовательские функции.cache — включает или отключает кэширование ранее
загруженных фрагментов страницы.method — HTTP-метод, используемый при всех запросах
Unpoly, если не указан явно в конкретной ссылке или форме.focus — автоматическая установка фокуса на первый
интерактивный элемент после подгрузки нового контента.Unpoly позволяет глобально определять контейнер, в который будут
подгружаться новые фрагменты HTML. Это делается через параметр
target:
up.setDefaults({
target: '#main-content'
});
target может быть CSS-селектором или
DOM-элементом.up.visit() и обработка ссылок будут по
умолчанию использовать указанный контейнер.Библиотека интегрируется с History API, обеспечивая сохранение
состояния страницы при асинхронной загрузке. Глобальные настройки для
истории задаются с помощью параметра history:
up.setDefaults({
history: true
});
history установлено в false,
изменения URL и состояние истории не будут сохраняться.up.setDefaults({
history: {
replace: false, // использовать pushState вместо replaceState
scroll: true // сохранять прокрутку страницы
}
});
Кэширование в Unpoly помогает уменьшить количество запросов к серверу и ускоряет переходы между страницами. Основные параметры кэширования управляются через глобальные настройки:
up.setDefaults({
cache: {
enabled: true,
maxSize: 50, // максимальное количество элементов в кэше
expire: 300000 // время жизни фрагмента в миллисекундах
}
});
enabled — включение или отключение кэширования.maxSize — ограничение на количество хранимых
фрагментов.expire — срок жизни фрагмента в кэше.Unpoly поддерживает глобальные обработчики событий для всех переходов
и обновлений контента. Настройка выполняется через объект
up.setDefaults:
up.setDefaults({
onBeforeRequest: (request) => {
console.log('Запрос будет отправлен:', request.url);
},
onSuccess: (response) => {
console.log('Контент успешно загружен');
},
onError: (response) => {
console.error('Ошибка загрузки:', response.status);
}
});
onBeforeRequest — вызывается перед отправкой любого
запроса Unpoly.onSuccess — срабатывает после успешного получения и
внедрения HTML.onError — вызывается при ошибке запроса.Для интеграции с серверной логикой часто требуется указывать
заголовки по умолчанию. Это делается через параметр
headers:
up.setDefaults({
headers: {
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content,
'X-Requested-With': 'XMLHttpRequest'
},
method: 'POST'
});
headers — объект с ключами и значениями
заголовков.method — HTTP-метод по умолчанию, который будет
использоваться, если в конкретной ссылке или форме метод не задан.Анимации переходов можно задавать не только через строковые значения, но и через функции. Глобально это выглядит так:
up.setDefaults({
animation: (fromEl, toEl) => {
fromEl.style.opacity = 0;
toEl.style.opacity = 1;
}
});
fromEl — элемент, который
заменяется; toEl — новый элемент.Unpoly позволяет глобально настраивать поведение для всех форм и ссылок:
up.setDefaults({
submit: {
confirm: true, // требовать подтверждение перед отправкой
disable: true // отключать кнопку после отправки
},
link: {
track: true // отслеживать клики для аналитики
}
});
submit — глобальные правила для форм, включая валидацию
и блокировку повторных отправок.link — настройки для всех ссылок Unpoly, например,
автоматическая аналитика или отслеживание переходов.Пример комплексной конфигурации:
up.setDefaults({
target: '#main-content',
animation: 'fade',
cache: { enabled: true, maxSize: 100, expire: 600000 },
history: { replace: false, scroll: true },
method: 'POST',
headers: { 'X-CSRF-Token': csrfToken },
focus: true,
onBeforeRequest: request => console.log('Запрос к', request.url),
onSuccess: response => console.log('Контент обновлен'),
onError: response => console.error('Ошибка:', response.status)
});
Такой подход обеспечивает единообразное поведение всех элементов интерфейса, упрощает поддержку кода и повышает производительность приложения, использующего Unpoly.