Перейти к содержимому

x-cloak

Иногда, когда вы используете AlpineJS для части своего шаблона, возникает «всплеск», когда вы можете увидеть неинициализированный шаблон после загрузки страницы, но до загрузки Alpine.

x-cloak решает эту проблему, скрывая элемент, к которому он прикреплен, до тех пор, пока Alpine не будет полностью загружен на страницу.

Однако для того, чтобы x-cloak работал, нужно добавить на страницу следующий CSS:

[x-cloak] {
display: none !important;
}

В следующем примере тег <span> будет скрыт до тех пор, пока для его x-show не будет установлено значение true, предотвращая любые «блики» скрытого элемента на странице при загрузке Alpine.

<span x-cloak x-show="false">
Это не приведет к появлению «всплесков» на экране в любой момент времени
</span>

x-cloak работает не только на элементах, скрытых с помощью x-show или x-if: он также обеспечивает скрытие элементов, содержащих данные, до тех пор, пока эти данные не будут корректно установлены. В следующем примере тег <span> будет скрыт до тех пор, пока Alpine не установит его текстовое содержимое в свойство message.

<span x-cloak x-text="message"></span>

Когда Alpine загружается на странице, он удаляет свойство x-cloak из элемента, тем самым убирая свойство display: none;, тем самым показывая элемент.

Альтернатива глобальному синтаксису

Если вы хотите достичь такого же поведения, но избежать необходимости включать глобальный стиль, можно использовать следующий интересный, хотя и немного странный приём:

<template x-if="true">
<span x-text="message"></span>
</template>

Это позволит достичь той же цели, что и x-cloak, просто используя принцип работы x-if.

Поскольку элементы <template> в браузерах «скрыты» по умолчанию, вы не увидите <span> до тех пор, пока Alpine не получит возможность отрендерить x-if="true" и показать его.

Опять же, это решение не для всех, но его стоит упомянуть для особых случаев.