svelte5-best-practices について
Svelte 5 開発者向けの実践ガイドです。リアクティブな状態、コンポーネントのプロパティ、スニペット、イベント処理に加え、SvelteKit、性能、移行の資料を案内します。
主な機能
- 01runes によるリアクティブ状態のパターン
- 02コンポーネントプロパティと双方向バインディング
- 03スニペットとレンダリングパターン
- 04イベント処理とコールバックプロパティ
- 05SvelteKit、性能、移行のリファレンス
活用シーン
- 01Svelte 5 のリアクティブ状態の実装
- 02コンポーネントプロパティとイベントコールバックの記述
- 03Svelte 4 コードの Svelte 5 への移行
- 04SvelteKit の読み込み処理や性能パターンの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ midudev/ autoskills --skill svelte5-best-practicesインストール後、Claude Code で/svelte5-best-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/events.mdmigration.mdperformance.mdrunes.mdsnippets.mdsveltekit.mdtypescript.md詳細
Svelte 5 のベストプラクティス
クイックリファレンス
| トピック | 使用する場面 | リファレンス |
|---|---|---|
| ルーン | $state、$derived、$effect、$props、$bindable、$inspect | runes.md |
| スニペット | スロットの置き換え、{#snippet}、{@render} | snippets.md |
| イベント | onclick ハンドラー、コールバックプロパティ、コンテキスト API | events.md |
| TypeScript | Props の型付け、ジェネリックコンポーネント | typescript.md |
| 移行 | Svelte 4 から 5 への移行、ストアからルーンへの移行 | migration.md |
| SvelteKit | Load 関数、フォームアクション、SSR、ページの型付け | sveltekit.md |
| パフォーマンス | ユニバーサルリアクティビティ、過剰なリアクティビティの回避、ストリーミング | performance.md |
基本的なパターン
リアクティブな状態
<script>
let count = $state(0); // Reactive state
let doubled = $derived(count * 2); // Computed value
</script>
コンポーネントの Props
<script>
let { name, count = 0 } = $props();
let { value = $bindable() } = $props(); // Two-way binding
</script>
スニペット(スロットの置き換え)
<script>
let { children, header } = $props();
</script>
{@render header?.()}
{@render children()}
イベントハンドラー
<button onclick={() => count++}>Click</button>
コールバックプロパティ(createEventDispatcher の置き換え)
<script>
let { onclick } = $props();
</script>
<button onclick={() => onclick?.({ data })}>Click</button>
よくある間違い
$stateを使わずにletを使う -$state()がない変数はリアクティブになりません- 派生値に
$effectを使う - 代わりに$derivedを使います on:click構文を使う - Svelte 5 ではonclickを使いますcreateEventDispatcherを使う - 代わりにコールバックプロパティを使います<slot>を使う -{@render}とスニペットを使います$bindable()を忘れる -bind:を動作させるには必須です- SSR でモジュールレベルの状態を設定する - リクエスト間で状態が漏れる原因になります
- Load 関数で await を逐次実行する - リクエストを並列で処理するには
Promise.allを使います
コメント
Markdown 対応