# Alpine.js ![npm bundle size](https://img.shields.io/bundlephobia/minzip/alpinejs) ![npm version](https://img.shields.io/npm/v/alpinejs) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://alpinejs.codewithhugo.com/chat/) Alpine.js предоставляет реактивность и декларативность как в больших фреймворках вроде Vue или React, но с меньшими затратами. Вы сможете использовать обычный DOM, при этом изменяя поведение по своему усмотрению. Можете думать о Alpine.js как о [Tailwind](https://tailwindcss.com/) для JavaScript. > Замечание: синтаксис Alpine.js почти полностью заимствован из [Vue](https://ru.vuejs.org/) (а, соответственно, и из [Angular](https://angularjs.org/)). Я безмерно благодарен разработчикам этих инструментов за тот вклад, который они внесли в Web. ## Установка **С помощью CDN:** Добавьте следующий ` ``` Вот и всё. Он инициализируется самостоятельно. Для рабочего окружения рекомендуется использовать ссылку с конкретным номером версии, чтобы избежать неожиданных поломок после выпуска новых версий. Например, чтобы использовать версию `2.8.2`: ```html ``` **С помощью npm:** Установите пакет из npm. ```js npm i alpinejs ``` Добавьте его в свой код. ```js import 'alpinejs' ``` **Для поддержки IE11** используйте вместо указанных выше следующие скрипты: ```html ``` Паттерн, использующийся выше, называется [паттерн module/nomodule](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/). Он позволяет автоматически загружать современный пакет в современных браузерах, а в IE11 и других устаревших браузерах – пакет для IE11. ## Использование *Выпадающий список/Модальное окно* ```html
``` *Вкладки* ```html
Вкладка Foo
Вкладка Bar
``` Alpine.js можно использовать и для более серьезных выражений. Например, *предзагрузка HTML-содержимого при наведении мыши*. ```html
Загрузка...
``` ## Изучение Всего в Alpine 14 директив: | Директива | Описание | | --- | --- | | [`x-data`](#x-data) | Объявляет новый компонент и его данные. | | [`x-init`](#x-init) | Выполняет переданное выражение, когда компонент инициализируется. | | [`x-show`](#x-show) | Переключает `display: none;` на элементе, в зависимости от результата переданного выражения (true или false). | | [`x-bind`](#x-bind) | Устанавливает значение атрибута равным результату переданного JS-выражения. | | [`x-on`](#x-on) | Устанавливает обработчик события на элемент. Когда событие срабатывает, выполняет переданное JS-выражение. | | [`x-model`](#x-model) | Добавляет "двустороннюю привязку данных" (two-way data binding) на элемент. Синхронизирует элемент и данные компонента. | | [`x-text`](#x-text) | Устанавливает значение `innerText` элемента равным результату переданного JS-выражения. | | [`x-html`](#x-html) | Устанавливает значение `innerHTML` элемента равным результату переданного JS-выражения. | | [`x-ref`](#x-ref) | Удобный способ получения DOM-элементов вашего компонента. | | [`x-if`](#x-if) | При невыполнении переданного условия полностью удаляет элемент из DOM. Должна использоваться в теге `