Alpine.jsって何?

私は、Webアプリを作成する際、特に問題がなければPython/Djangoを選択します。Djangoを利用したWebアプリでHTMXを利用することもあります。その組み合わせの中で、Alpine.jsを利用する話を聞くことがあります。

「Alpine.jsって何?」と感じたので、軽く調べてみました。今回はその調べた内容を共有します。

Alpine.jsって何?

Alpine.jsは、クライアントだけで完結するUI操作を担当できるライブラリです。HTMXは、クラウアントだけで完結しないサーバーとのやり取りを得意としていますが、サーバーに問い合わせるほどでもない小さなインタラクションには、Alpine.jsが活用できます。

例えば次のような操作が対応します。

  • ドロップダウンメニュー
  • モーダルの開閉
  • タブの切り替え
  • アコーディオンの展開/折りたたみ

Alpine.jsを利用すると、 x-show, x-on:click, x-data といったHTML属性を書くだけでこのような操作を実現できます。

<!-- Alpine.jsでのトグル例 -->
<div x-data="{ open: false }">
  <button x-on:click="open = !open">メニュー</button>
  <ul x-show="open" x-transition>
    <li>項目1</li>
    <li>項目2</li>
  </ul>
</div>

Alpine.jsでは x-data を付けた要素が一つの「コンポーネント境界」になります。その子孫要素から状態にアクセスできます。つまり、x-data="{ open: false }" で、open というリアクティブな状態を false として初期化しています。

次に x-on:click はクリックイベントです。x-on:click="open = !open"open の真偽値を反転させています。

x-show="open"opentrue のときだけ要素を表示する宣言です。 display: none の切り替えで表現されるので、DOMから要素が削除されません。

x-transition は表示・非表示の切り替え時にCSSトランジションを付与する宣言です。細かく制御したい場合は x-transition.duration.300ms のような修飾子を指定します。

公式ドキュメントはこちら

https://alpinejs.dev/

類似投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です