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 从公开仓库中收录这些内容。

举报或申请下架