SuperAPI AI 工具集

sveltekit-remote-functions

前端与建站

查看项目

更新于 10-15 16:40

技能介绍

用途:该技能为 SvelteKit 的远程函数提供使用指导,远程函数目前是 SvelteKit 2.58 中的实验性功能。启用方式是在 svelte.config.js 中配置 kit.experimental.remoteFunctions 为 true;若需在组件中使用 await,还需开启 compilerOptions.experimental.async。

文件与选择:从 *.remote.ts 或 *.remote.js 导出远程函数,文件可放在 src 下任意位置,但 src/lib/server 除外。按用途选择:动态读取用 query(),渐进增强表单用 form(),事件处理类变更用 command(),构建期或静态读取用 prerender()。

主要能力:远程函数始终在服务器运行,即使从浏览器调用;参数与返回值使用 devalue 序列化,应避免函数、类实例、symbol、循环引用和 RegExp。暴露的输入需用 Standard Schema 校验(如 valibot、zod、arktype),或显式使用 .unchecked。query.batch() 可合并同一宏任务内的调用以解决 n+1 读取。form().enhance() 的 submit() 在校验通过并成功时返回 true,校验失败返回 false。.updates() 由客户端发起,服务端处理器需以 requested(queryFn, limit) 显式开启,requested() 会产出 { arg, query },需在绑定实例上调用 query.refresh()/query.set(...),limit 用于限制客户端控制的刷新请求数量。在 command/form 处理器中应使用 void query.refresh() 或 void query.set(value)。注重渐进增强时优先用 form() 而非 command();数据最多每次部署变化一次时用 prerender()。

限制:属实验性功能,版本与行为可能变化;查询刷新需服务端显式 opt in,且 limit 为必填。其他适用细节、完整参考与注意事项暂未提供。最后验证版本为 SvelteKit 2.58.0。