关于 sveltekit-data-flow
面向 SvelteKit 开发者的数据流参考技能,说明加载函数、表单操作和错误处理的选择方式。还涵盖序列化规则及客户端认证后的数据失效处理。
主要功能
- 01区分服务端与通用加载函数
- 02使用表单操作处理提交
- 03通过 fail、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 数据流
快速入门
用哪个文件? 仅服务器端(数据库/密钥):+page.server.ts |
通用(两端都会运行):+page.ts | API:+server.ts
加载决策: 需要服务器资源?→ 服务器端 load | 需要客户端 API?→ 通用 load
表单操作: 始终使用 +page.server.ts。错误时返回 fail(),导航时抛出 redirect(),失败时抛出 error()。
示例
// +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()
注意事项
- 服务器端 load → 通过
data参数传递给通用 load | 始终throw redirect()/error() - 服务器端 load 不可返回类实例/函数(无法序列化)
- 上次验证时间: 2025-01-11
评论
支持 Markdown