Перейти к содержимому
Логотип фреймворка AlpineJS Логотип фреймворка AlpineJS

Простой, лёгкий и безумно мощный

Новый легковесный фреймворк JavaScript.

Alpine — это надёжный и простой инструмент для создания поведения непосредственно в вашей разметке. Думайте об этом как о jQuery для современного Интернета. Добавьте тег script и приступайте к работе.

<script src="//unpkg.com/alpinejs" defer></script>
<div x-data="{ open: false }">
<button @click="open = true">Развернуть</button>
<span x-show="open">
Контент...
</span>
</div>

Alpine — это коллекция из 18 атрибутов, 9 свойств и 3 методов.

Нет лучшего способа разобраться в том, что такое Alpine и на что он способен, чем увидеть это своими глазами:

x-data

Объявляйте новый компонент Alpine и его данные для блока HTML:

<div x-data="{ open: false }">
...
</div>

x-init

Запускайте код, когда элемент инициализируется с помощью Alpine:

<div x-init="date = new Date()"></div>

x-show

Переключайте видимость элемента:

<div x-show="open">
...
</div>

x-bind

Устанавливайте динамические атрибуты HTML для элемента:

<div x-bind:class="! open ? 'hidden' : ''">
...
</div>

x-on

Прослушивайте события браузера на элементе:

<button x-on:click="open = ! open">
Переключить
</button>

x-text

Устанавливайте текстовое содержимое элемента:

<div>
Авторское право © <span x-text="new Date().getFullYear()"></span>
</div>

x-html

Устанавливайте внутренний HTML элемента:

<div x-html="(await axios.get('/some/html/partial')).data">
...
</div>

x-model

Синхронизируйте часть данных с элементом ввода:

<div x-data="{ search: '' }">
<input type="text" x-model="search">
Поиск: <span x-text="search"></span>
</div>

x-modelable

Создавайте двустороннюю привязку данных для пользовательских компонентов:

<div x-data="{ value: '' }">
<input x-modelable="value" type="text">
<p>Value: <span x-text="value"></span></p>
</div>

x-for

Повторяйте блок HTML на основе набора данных:

<template x-for="post in posts">
<h2 x-text="post.title"></h2>
</template>

x-transition

Перемещайте элемент внутрь и наружу с помощью переходов CSS:

<div x-show="open" x-transition>
...
</div>

x-effect

Выполняйте скрипт каждый раз, когда меняется одна из его зависимостей:

<div x-effect="console.log('count: '+count)"></div>

x-ignore

Предотвращайте инициализацию блока HTML с помощью Alpine:

<div x-ignore>
...
</div>

x-ref

Ссылайтесь на элементы напрямую по их указанным ключам, используя магическое свойство $refs:

<input type="text" x-ref="content">
<button x-on:click="navigator.clipboard.writeText($refs.content.value)">
Скопировать
</button>

x-cloak

Скрывайте блок HTML до тех пор, пока Alpine не завершит инициализацию его содержимого:

<div x-cloak>
...
</div>

x-teleport

Перемещайте содержимое компонента в другое место в DOM, сохраняя его реактивность:

<div x-data="{ show: false }">
<button x-on:click="show = !show">
Переключить
</button>
<template x-if="show">
<div x-teleport="#target">
Это будет телепортировано!
</div>
</template>
</div>
<div id="target"></div>

x-if

Добавляйте/удаляйте блок HTML по условию со страницы целиком:

<template x-if="open">
<div>...</div>
</template>

x-id

Генерируйте уникальные идентификаторы для элементов:

<div x-id="['text-input']">
<label x-bind:for="$id('text-input')">Имя</label>
<!-- for="text-input-1" -->
<input x-bind:id="$id('text-input')" />
<!-- id="text-input-1" -->
</div>

Надеюсь, что Alpine станет для вас глотком свежего воздуха. Тишиной среди шума.

Caleb Porzio (Калеб Порцио), создатель Alpine.js