Alpine.js

Ми будемо використовувати цей фреймворк https://github.com/alpinejs/alpine

Інсталяція

Alpine.js інсталюється легко. Ви можете використовувати npm або CDN.

NPM installation

Інсталяція через npm наведено нижче

npm i alpinejs

CDN installation

Вставте наведений нижче код у розділ head вашого HTML-файлу.

<script src="https://cdn.jsdelivr.net/gh/alpinejs/[email protected]/dist/alpine.min.js" defer></script>

Простий компонент

Я використовуватиму підключення через CDN.
Нижче є приклад простого використання цієї бібліотеки.

<html>
    <head>
        <script src="https://cdn.jsdelivr.net/gh/alpinejs/[email protected]/dist/alpine.min.js" defer></script>
    </head>
    <body>
        <div x-data="{ counter: 0 }">
            <h1 x-text="'Count: ' + counter"></h1>
            <button x-on:click="counter++">+1</button>
        </div>
    </body>
</html>

Перший крок. x-data повідомляє нову область видимості компонента. Він каже каркасу ініціалізувати новий компонент із наступним об’єктом даних. Це як властивість data компонента Vue2.

У наведеному вище коді використовуючи директиву x-data ми визначили область видимості, передаючи об’єкт як значення.

Для елемента button ми слухаємо директиву x-on та подію click, яка збільшує значення counter.

Директива x-text отображает значение из переменной counter.

Директиви

Наразі доступны 13 директив:

ДирективаОпис
x-dataОголошує нову область компонента.
x-initЗапускає вираз при ініціалізації компонента. Можна отримати доступ до стану після ініціалізації (щось типу конструктора).
x-showПеремикач стилю display: none; залежно від виразу (true чи false).
x-bindВстановлює значення атрибуту. Оновлюватися кожного разу, коли оновлюються дані компонента.
x-onДля обробки подій. Додає listener на елемент.
x-modelДодає двосторонню прив’язку даних до елемента.
x-textПрацює аналогічно x-bind, але оновить innerText елемент.
x-htmlПрацює аналогічно x-bind, але оновить innerHTML елемент.
x-refЗручний спосіб отримати необроблені елементи DOM з вашого компонента.
x-ifВидалити елемент повністю з DOM. Необхідно використовувати тег < template >.
x-forСтворіть нові вузли DOM для кожного елемента масиву. Необхідно використовувати тег < template >.
x-transitionДирективи застосування класів до різних етапів переходу елемента, приклад.
x-cloakЦей атрибут видаляється при ініціалізації Alpine.

И 6 магических свойств:

ВластивістьОпис
$elОтримати кореневий компонент з DOM.
$refsОтримати елементи DOM позначені знаком x-ref усередині компонента.
$eventОтримати нативний об’єкт подія.
$dispatchСтворіть CustomEvent та dispatch за допомогою .dispatchEvent().
$nextTickВиконується після reactive DOM updates.
$watchВідстежує змінну.

Ось такий мінімалістичний фремворк дуже схожий на vue.js