sveltekit-data-flow について
SvelteKit 開発者向けに、ロード関数、フォームアクション、エラー処理の選び方を説明するデータフローのリファレンススキルです。シリアライズ規則と、クライアント側の認証後にデータを無効化する方法も扱います。
主な機能
- 01サーバーとユニバーサルのロード関数の区別
- 02フォームアクションによる送信処理
- 03fail、redirect、error による結果処理
- 04データのシリアライズ制限の説明
- 05クライアント側認証後のデータ更新
活用シーン
- 01ページデータを読み込むファイルの選択
- 02エラー処理を伴うフォーム送信の実装
- 03シリアライズ不能なサーバーデータの回避
- 04認証状態の変更後にページデータを無効化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spences10/ svelte-skills-kit --skill sveltekit-data-flowインストール後、Claude Code で/sveltekit-data-flowを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/client-auth-invalidation.mderror-redirect-handling.mdform-actions.mdload-functions.mdserialization.md詳細
SvelteKit のデータフロー
クイックスタート
どのファイル? サーバー専用(DB/シークレット):+page.server.ts |
ユニバーサル(両方で実行):+page.ts | API:+server.ts
ロードの判断基準: サーバーリソースが必要ですか? → サーバーロード | クライアント API が必要ですか? → ユニバーサルロード
フォームアクション: 常に +page.server.ts を使います。エラーには
fail() を返し、画面遷移には redirect() を throw し、失敗時には error() を throw します。
例
// +page.server.ts
import { fail, redirect } from '@sveltejs/kit';
export const load = async ({ locals }) => {
const user = await db.users.get(locals.userId);
return { user }; // Must be JSON-serializable
};
export const actions = {
default: async ({ request }) => {
const data = await request.formData();
const email = data.get('email');
if (!email) return fail(400, { email, missing: true });
await updateEmail(email);
throw redirect(303, '/success');
},
};
参考ファイル
- load-functions.md - サーバーと ユニバーサルの違い
- form-actions.md - フォーム処理の パターン
- serialization.md - シリアライズできるもの/できない もの
- error-redirect-handling.md - fail/redirect/error
- client-auth-invalidation.md - クライアント側の認証後に invalidateAll()
注意事項
- サーバーロード →
dataパラメーターを介してユニバーサルロードへ | 必ずthrow redirect()/error()を使います - サーバーロードからクラスインスタンス/関数を返さないでください(シリアライズできません)
- 最終確認日: 2025-01-11
コメント
Markdown 対応