mcpField
A
alpine-js

alpine-js

github.com/mindrally開発2871.4k 回インストール3 週間前に更新
リポジトリ

alpine-js について

Alpine.jsで軽量なリアクティブUIを構築するための開発スキルです。ディレクティブ、コンポーネント設計、連携、パフォーマンス、アクセシビリティを扱います。

主な機能

  1. 01Alpine.jsのディレクティブとリアクティビティ
  2. 02Alpine.data()による再利用可能なコンポーネント
  3. 03Alpine.store()による共有状態管理
  4. 04Tailwind CSSとLivewireの連携パターン
  5. 05パフォーマンスとアクセシビリティの指針

活用シーン

  1. 01操作可能なドロップダウンの実装
  2. 02ブラウザー上でのフォーム検証
  3. 03Tailwindページへのリアクティブな動作の追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mindrally/skills --skill alpine-js

インストール後、Claude Code で/alpine-jsを入力して読み込まれたか確認します。

詳細

Alpine.js 開発

軽量でリアクティブなウェブインターフェースを構築するための Alpine.js のエキスパートです。

基本原則

  • 正確な Alpine.js の例を用いて、簡潔で技術的な回答を作成します
  • 軽量で宣言的なインタラクティブ機能には Alpine.js を使用します
  • パフォーマンスの最適化と JavaScript の最小化を優先します
  • Tailwind CSS やバックエンドフレームワークとシームレスに統合します

Alpine.js の基本

ディレクティブ
  • x-data - コンポーネントのリアクティブなデータを定義します
  • x-bind - 属性を式にバインドします
  • x-on - イベントリスナーを設定します
  • x-model - 入力の双方向データバインディングを行います
  • x-show / x-if - 条件付きでレンダリングします
  • x-for - 配列の要素をループ処理します
  • x-text / x-html - テキストまたは HTML コンテンツを設定します
  • x-ref - DOM 要素を参照します
  • x-init - 初期化時にコードを実行します
コンポーネントのパターン
<div x-data="{ open: false, count: 0 }">
  <button @click="open = !open">Toggle</button>
  <div x-show="open" x-transition>
    <p x-text="count"></p>
    <button @click="count++">Increment</button>
  </div>
</div>

統合パターン

Tailwind CSS との連携
  • スタイリングには Tailwind を、動作には Alpine を使用します
  • x-bind:class と Tailwind のユーティリティを組み合わせます
  • x-transition と Tailwind を使ってトランジションを適用します
Laravel/Livewire との連携(TALL Stack)
  • クライアントサイドのインタラクティブ機能には Alpine を使用します
  • サーバーとの通信は Livewire に任せます
  • Livewire との双方向バインディングには @entangle を使用します
  • コンポーネントの役割を明確にし、モジュール化します
Ghost CMS との連携
  • 動的なコンテンツの操作には Alpine を使用します
  • Ghost のコンテンツ API と統合します
  • データ取得のパターンを適切に処理します

ベストプラクティス

パフォーマンス
  • x-data オブジェクトは小さく、目的を絞ったものにします
  • パフォーマンス向上のため、可能な場合は x-if より x-show を使用します
  • 負荷の高いコンポーネントは遅延読み込みします
  • DOM 操作を最小限に抑えます
コードの構成
  • 再利用可能なロジックは Alpine.data() コンポーネントに抽出します
  • 共有状態には Alpine.store() を使用します
  • インライン式はシンプルに保ち、複雑なロジックはメソッドに移します
  • 意味の分かりやすい変数名を使用します
アクセシビリティ
  • キーボード操作が機能することを確認します
  • 適切な ARIA 属性を使用します
  • スクリーンリーダーでテストします
  • フォーカス管理を適切に行います

よく使われるパターン

ドロップダウンメニュー
<div x-data="{ open: false }" @click.away="open = false">
  <button @click="open = !open">Menu</button>
  <div x-show="open" x-transition>
    
  </div>
</div>
フォームの検証
<form x-data="{ email: '', isValid: false }" @submit.prevent="submit">
  <input x-model="email" @input="isValid = validateEmail(email)">
  <button :disabled="!isValid">Submit</button>
</form>

コメント