Sveltekit Data Flow

spences10/svelte-skills-kit/plugins/svelte-skills/skills/sveltekit-data-flow

作者 spences102a9d88379bf62cee464a16db852edda7790a58f5無授權條款收錄於 2026年10月9日更新於 2026年10月9日

SvelteKit data flow guidance. Use for load functions, form actions, server/client data, and invalidation. Covers +page.server.ts vs +page.ts, serialization, fail(), redirect(), error(), invalidateAll().

AI 產生的概覽

SvelteKit 資料流指引:載入函式、表單動作、序列化,以及錯誤與重新導向處理。

功能
此技能提供 SvelteKit 應用程式中資料流動方式的參考指引。它說明何時使用僅伺服器端載入函式與通用載入函式、如何撰寫表單動作、哪些值可以序列化,以及如何使用 fail()、redirect()、error() 與 invalidateAll()。它以說明文件與參考檔案形式提供,而非可執行的指令碼。
適用情境
在實作或審查 SvelteKit 路由,且需要在 +page.server.ts、+page.ts 與 +server.ts 之間做選擇時使用。它也適用於處理表單送出、序列化限制或客戶端驗證失效等情境。
執行需求
不需要指令碼或套件,僅為說明與參考文件。代理不需要憑證或網路存取。

SvelteKit Data Flow

Quick Start

Which file? Server-only (DB/secrets): +page.server.ts | Universal (runs both): +page.ts | API: +server.ts

Load decision: Need server resources? → server load | Need client APIs? → universal load

Form actions: Always +page.server.ts. Return fail() for errors, throw redirect() to navigate, throw error() for failures.

Example

typescript
// +page.server.tsimport { 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');	},};

Reference Files

  • load-functions.md [blocked] - Server vs universal
  • form-actions.md [blocked] - Form handling patterns
  • serialization.md [blocked] - What can/can't serialize
  • error-redirect-handling.md [blocked] - fail/redirect/error
  • client-auth-invalidation.md [blocked] - invalidateAll() after client-side auth

Notes

  • Server load → universal load via data param | ALWAYS throw redirect()/error()
  • No class instances/functions from server load (not serializable)
  • Last verified: 2025-01-11
<!-- PROGRESSIVE DISCLOSURE GUIDELINES: - Keep this file ~50 lines total (max ~150 lines) - Use 1-2 code blocks only (recommend 1) - Keep description <200 chars for Level 1 efficiency - Move detailed docs to references/ for Level 3 loading - This is Level 2 - quick reference ONLY, not a manual LLM WORKFLOW (when editing this file): 1. Write/edit SKILL.md 2. Format (if formatter available) 3. Run: npx skills add . --list 4. If the skill is not discovered, check SKILL.md frontmatter formatting 5. Validate again to confirm -->

來源與署名

來源:spences10/svelte-skills-kit位於plugins/svelte-skills/skills/sveltekit-data-flow提交2a9d883

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架