Шаблонизация
Alpine предлагает несколько полезных директив для управления DOM на веб-странице.
Давайте рассмотрим здесь несколько основных директив шаблонов, но обязательно просмотрите доступные директивы на боковой панели, чтобы получить исчерпывающий список.
Текстовое содержимое
Alpine позволяет легко управлять текстовым содержимым элемента с помощью директивы x-text
.
Теперь Alpine установит в качестве содержимого <span>
значение title
(«Начало»). Когда title
изменится, изменится и содержимое <span>
.
Подобно другим директивам в Alpine, вы можете использовать любое выражение JavaScript, которое вам нравится. Например:
<span>
теперь будет содержать сумму «1» и «2».
Переключение элементов
Переключение элементов — обычная потребность на веб-страницах и в приложениях. Выпадающие списки, модальные окна, диалоги, «показать далее» и т. д. — всё это хорошие примеры.
Alpine предлагает директивы x-show
и x-if
для переключения элементов на странице.
x-show
Вот простой компонент переключения, использующий x-show
:
Теперь весь <div>
, содержащий содержимое, будет отображаться и скрываться в зависимости от значения open
.
Alpine добавляет свойство CSS display: none;
к элементу, когда он должен быть скрыт.
Это хорошо работает в большинстве случаев, но иногда вам может потребоваться полностью добавить или полностью удалить элемент из DOM. Вот для чего нужен x-if
.
x-if
Вот тот же переключатель, что и раньше, но на этот раз вместо x-show
используется x-if
:
Обратите внимание, что x-if
должен быть объявлен в теге <template>
. Это сделано для того, чтобы Alpine мог использовать существующее поведение браузера элемента <template>
и использовать его в качестве источника целевого <div>
для добавления и удаления со страницы.
Если open
имеет значение true, Alpine добавит <div>
к тегу <template>
и удалит его, если open
имеет значение false.
Переключение с помощью переходов
Alpine упрощает плавный переход между «показанным» и «скрытым» состояниями с помощью директивы x-transition
.
Вот ещё раз простой пример переключения, но на этот раз с применением переходов:
Давайте рассмотрим часть шаблона, связанную с переходами:
x-transition
сам по себе применит к переключателю разумные переходы по умолчанию (затухание и масштабирование).
Есть два способа настройки этих переходов:
- Хелперы переходов
- CSS-классы переходов
Давайте рассмотрим каждый из этих подходов:
Хелперы переходов
Допустим, вы хотите увеличить продолжительность перехода. Вы можете вручную указать это с помощью модификатора .duration
следующим образом:
Теперь переход будет длиться 500 миллисекунд.
Если вы хотите указать разные значения для входных и выходных переходов, вы можете использовать x-transition:enter
и x-transition:leave
:
Кроме того, вы можете добавить .opacity
или .scale
, чтобы передать только это свойство. Например:
Классы переходов
Если вам нужен более детальный контроль над переходами в вашем приложении, вы можете применить определённые классы CSS на определённых этапах перехода, используя следующий синтаксис (в этом примере используется Tailwind CSS):
Привязка атрибутов
Вы можете добавлять атрибуты HTML, такие как class
, style
, disabled
и т. д., к элементам в Alpine, используя директиву x-bind
.
Вот пример динамически связанного атрибута class
:
Для краткости можно опустить x-bind
и использовать сокращённый синтаксис :
:
Включение и выключение классов на основе данных, содержащихся в Alpine, является распространённой потребностью. Приведём пример переключения класса с использованием синтаксиса объекта привязки class
в Alpine: (Примечание: этот синтаксис доступен только для атрибутов class
):
Теперь класс hidden
будет добавлен к элементу, если значение open
равно false
, и удалён, если значение open
равно true
.
Вывод элементов в цикле
Alpine позволяет итерировать части шаблона на основе данных JavaScript с помощью директивы x-for
. Приведём простой пример:
Аналогично x-if
, x-for
должен применяться к тегу <template>
. Внутренне Alpine будет добавлять содержимое тега <template>
на каждой итерации цикла.
Как видно, новая переменная status
доступна в области видимости итерируемых шаблонов.
Внутренний HTML
Alpine позволяет легко управлять HTML-содержимым элемента с помощью директивы x-html
.
Теперь Alpine задаст текстовое содержимое <div>
элементом <h3>Начало</h3>
. При изменении title
будет изменяться и содержимое <h3>
.
Проверка знаний
-
Что отобразится на странице с помощью указанной разметки?
-
Какой из этих хелперов переходов не существует?