Unpoly — это JavaScript-библиотека, предназначенная для создания динамических веб-приложений с минимальным использованием JavaScript-кода. Одним из ключевых понятий в Unpoly является слой (layer). Слои позволяют управлять отображением разных фрагментов страницы, обрабатывать вложенные диалоги и модальные окна, а также обеспечивать независимое обновление контента без полной перезагрузки страницы.
В Unpoly слой — это область, в которой отображается контент, загружаемый через AJAX. Слои бывают двух основных типов:
Каждый слой имеет уникальный идентификатор, автоматически
присваиваемый Unpoly, или можно задать его вручную через атрибут
up-target.
Слои создаются автоматически при использовании таких атрибутов, как
up-target и up-layer. Основные операции со
слоями:
<a href="/profile/edit" up-target=".layer" up-layer="modal">Редактировать профиль</a>
Здесь:
up-target указывает CSS-селектор контейнера для
загрузки нового контента.up-layer="modal" создаёт новый слой поверх текущего,
имитируя модальное окно.up.fragment.reload('.layer', { cache: false });
Метод up.fragment.reload перезагружает фрагмент в
указанном слое. Опция cache: false гарантирует получение
свежих данных с сервера.
up.layer.close('.layer');
Метод up.layer.close закрывает указанный слой,
автоматически возвращая фокус на родительский.
Unpoly поддерживает вложенные слои, что особенно полезно для многоуровневых диалогов. Основные принципы:
up:layer:opened и up:layer:closed
позволяют отслеживать открытие и закрытие каждого слоя.Пример вложенного слоя:
<div class="layer">
<a href="/comments/new" up-target=".layer" up-layer="overlay">Добавить комментарий</a>
</div>
При нажатии на ссылку создаётся новый слой поверх текущего, сохраняя родительский контент.
Unpoly предоставляет гибкие возможности конфигурации слоев через атрибуты и глобальные опции.
Тип слоя (up-layer)
modal — модальные окна.overlay — всплывающие панели.default — обычный фрагмент в текущем слое.Фокусировка и взаимодействие
up-focus — элемент, который получает фокус при открытии
слоя.up-close-on-escape — автоматически закрывает слой при
нажатии Esc.Анимация и переходы
up-transition позволяет задавать анимацию при открытии
и закрытии слоев.<div class="layer" up-transition="fade">
Содержимое с плавным появлением
</div>
Контроль кеширования
up-cache управляет хранением содержимого слоя в памяти
для повторного использования без запроса к серверу.Unpoly предлагает API для полной работы со слоями:
up.layer.open('/settings', { layer: 'modal', target: '.layer' });
let topLayer = up.layer.getTop();
let allLayers = up.layer.all();
Unpoly автоматически интегрирует слои с историей браузера. Каждое
открытие слоя создаёт отдельную запись в history.pushState.
Это позволяет:
Unpoly генерирует ряд событий, связанных с жизненным циклом слоя:
up:layer:opened — после полной загрузки и отображения
слоя.up:layer:closed — после закрытия слоя.up:layer:changing — до изменения контента слоя.up:layer:changed — после обновления содержимого
слоя.Пример подписки на событие:
up.on('up:layer:opened', '.layer', function(event) {
console.log('Слой открыт:', event.target);
});
События можно использовать для настройки динамического поведения, например, инициализации виджетов внутри нового слоя.
up-layer="modal" и up-close-on-escape, чтобы
обеспечить привычное поведение.up-transition улучшает визуальное
восприятие и плавность интерфейса.Система слоев Unpoly обеспечивает гибкое, модульное управление интерфейсом, позволяя создавать сложные, интерактивные веб-приложения без громоздкого JavaScript-кода. Понимание принципов работы слоев, их типов, вложенности и событий является ключевым для построения динамических пользовательских интерфейсов.