Unpoly предоставляет мощные средства для управления историей браузера, что позволяет создавать динамичные веб-приложения с плавной навигацией без перезагрузки страниц. Основная концепция заключается в том, что каждый переход по ссылке или отправка формы может быть обработана асинхронно, а состояние браузера обновляется через HTML5 History API.
Unpoly использует встроенные механизмы History API для управления URL
и состояния страницы. Это включает методы pushState,
replaceState и события popstate. Основные
моменты:
Unpoly автоматически синхронизирует URL и контент при асинхронных
переходах. Например, при клике на ссылку, загружаемую через
up-target, URL обновляется без полной перезагрузки
страницы, а предыдущие состояния сохраняются для навигации «назад».
Каждое состояние страницы в Unpoly хранит следующие ключевые элементы:
target).document.title).up.layer.data() или up.setState().Состояния можно модифицировать программно:
up.layer.data('filter', { category: 'books', sort: 'asc' });
up.setState({ tab: 'details' });
Это позволяет сохранять пользовательские фильтры, активные вкладки или позиции прокрутки при навигации.
Unpoly позволяет детально настраивать работу истории через глобальные и локальные параметры:
true по
умолчанию.Пример настройки:
up.options.history = true;
up.options.scroll = 'restore';
up.options.restoreScroll = true;
Unpoly предоставляет API для программной навигации:
up.visit(url, options) – переход к новому URL с
опциональной настройкой истории.up.back() – переход к предыдущему состоянию
истории.up.forward() – переход к следующему состоянию истории,
если таковой существует.Параметры метода up.visit позволяют управлять
состоянием:
up.visit('/products', {
target: '#main-content',
history: true, // добавить в историю
scroll: 'top' // прокрутка к верху страницы
});
Для полной интеграции навигации Unpoly предоставляет события:
up:visit – срабатывает перед началом перехода.up:layer:opened – после того, как новый слой с
контентом был добавлен.up:popstate – при восстановлении предыдущего состояния
истории.Эти события позволяют выполнять дополнительные действия, такие как анимации, логирование или сохранение состояния пользовательских интерфейсов.
Unpoly автоматически обрабатывает фрагменты URL
(#anchor) при переходах:
Пример:
<a href="/section#features" up-target="#content">Особенности</a>
Unpoly при загрузке секции #features обновит URL и
прокрутит страницу к указанному элементу, сохраняя возможность возврата
к предыдущему положению.
При отправке форм через up-form история автоматически
обновляется. Это особенно полезно для фильтров и пагинации:
<form up-target="#results" up-history="true">
<select name="category" oncha nge="this.form.submit()">
<option value="books">Книги</option>
<option value="movies">Фильмы</option>
</select>
</form>
Каждое изменение отправляет форму асинхронно, обновляет контент в
#results и добавляет состояние в историю, что позволяет
пользователю возвращаться к предыдущим фильтрам без полной перезагрузки
страницы.
up-layer для логической структуры
контента: основной слой страницы, модальные окна, панели фильтров.up.options.history в зависимости от
необходимости сохранения состояния.up:popstate для восстановления
пользовательских интерфейсов после навигации назад.up.options.scroll и
якорей для плавного и предсказуемого поведения.Unpoly обеспечивает гибкую и детальную настройку истории, позволяя создавать веб-приложения, где переходы между страницами кажутся мгновенными, а состояние пользовательского интерфейса всегда сохраняется и восстанавливается корректно.