Макросы в библиотеке Unpoly — это мощный инструмент для динамичного обновления контента на веб-странице. Они позволяют описывать действия, которые нужно выполнить на клиентской стороне, используя простой и понятный синтаксис. Макросы позволяют значительно упростить взаимодействие с сервером и манипуляцию DOM, что особенно полезно для создания интерактивных и отзывчивых веб-приложений. В этом разделе рассматриваются основные макросы, их синтаксис и использование.
Макросы в Unpoly — это короткие команды, которые позволяют
манипулировать DOM или делать запросы к серверу. Когда пользователь
взаимодействует с элементом интерфейса, макрос активируется и выполняет
нужное действие. Макросы поддерживаются через атрибуты элементов, такие
как data-up, а также могут быть использованы в
JavaScript-коде.
Макросы могут использоваться для:
Макросы в Unpoly обычно применяются через атрибут
data-up или через JavaScript API. Например, атрибут
data-up используется для привязки макроса к HTML-элементу.
Макросы обычно записываются как строки, которые могут включать
переменные и специальные операторы.
Пример базового синтаксиса:
<button data-up="load: '/example-page'">Загрузить страницу</button>
В данном случае, при клике на кнопку будет выполнен макрос
load, который загрузит страницу с URL
/example-page и обновит соответствующую часть страницы.
loadМакрос load используется для загрузки содержимого с
сервера и вставки его в DOM. Это основной макрос для работы с
асинхронными запросами в Unpoly.
Пример:
<button data-up="load: '/content'">Загрузить контент</button>
Этот макрос выполняет GET-запрос по указанному URL и вставляет полученный HTML в элемент, к которому привязан макрос. Если необходимо обновить только определенную часть страницы, можно использовать селектор CSS:
<button data-up="load: '/content' target: '#main-content'">Загрузить в основной блок</button>
replaceМакрос replace позволяет заменить содержимое целевого
элемента на новый контент, полученный с сервера. Этот макрос схож с
load, но отличается тем, что вместо добавления контента в
DOM он полностью заменяет его.
Пример:
<button data-up="replace: '#sidebar' url: '/new-sidebar'">Заменить боковую панель</button>
Этот макрос заменит содержимое элемента с id sidebar на
результат запроса к /new-sidebar.
show и hideМакросы show и hide позволяют управлять
видимостью элементов на странице. Они могут быть полезны для реализации
различных интерактивных интерфейсов, например, для отображения
всплывающих окон или скрытия неактивных секций.
Пример использования:
<button data-up="hide: '#notification'">Скрыть уведомление</button>
<button data-up="show: '#notification'">Показать уведомление</button>
navigateМакрос navigate используется для изменения URL страницы
без её полной перезагрузки. Это позволяет имитировать работу с
традиционными ссылками, при этом сохраняя состояние страницы и улучшая
производительность.
Пример:
<a data-up="navigate: '/new-page'">Перейти на новую страницу</a>
Этот макрос изменит URL браузера на /new-page, а контент
будет загружен асинхронно, без полной перезагрузки страницы.
replaceStateМакрос replaceState позволяет изменять историю браузера,
но без перезагрузки страницы. Это полезно для случаев, когда нужно
обновить адрес в строке браузера, но без загрузки нового контента.
Пример:
<button data-up="replaceState: '/new-url'">Изменить URL без перезагрузки</button>
Макросы в Unpoly могут принимать различные аргументы и условия. Это позволяет гибко управлять поведением макросов в зависимости от ситуации.
Макросы могут быть выполнены только при определенных условиях.
Например, можно использовать атрибут data-up-condition,
чтобы выполнить макрос только в случае, если заданное условие
истинно.
Пример:
<button data-up="load: '/data'" data-up-condition="!window.hasData">Загрузить данные, если они еще не загружены</button>
В этом примере макрос будет выполнен только в том случае, если
переменная window.hasData ложна.
При использовании макросов можно передавать параметры в виде переменных, которые затем используются внутри макроса. Это позволяет делать макросы более динамичными и адаптированными к различным ситуациям.
Пример:
<button data-up="load: '/user/{userId}'">Загрузить профиль пользователя</button>
В данном случае параметр userId будет динамически
подставляться в URL.
Помимо использования макросов в атрибутах HTML-элементов, Unpoly
также позволяет работать с ними через JavaScript. Для этого используется
метод up.reload(), который позволяет вручную инициировать
выполнение макроса.
Пример:
up.reload('#content', {url: '/new-content'});
Этот вызов аналогичен макросу load и загрузит новый
контент в элемент с id content.
Макросы в Unpoly открывают широкие возможности для создания быстрых и отзывчивых интерфейсов. Они обеспечивают мощную абстракцию над стандартными операциями с сервером и DOM, значительно сокращая время разработки и улучшая производительность.