SvelteKit 静态与服务端渲染
SvelteKit 搭配自适应渲染(每页 SSG/SSR/SPA)、Svelte 5 runes 和零运行时 CSS。
技术栈组成
为什么
Svelte 编译为原生 JS — 无虚拟 DOM,包比 React 小 10 倍。SvelteKit 让每页通过一个配置选择 SSG(博客)、SSR(仪表板)或 SPA(管理)。
Runes($state、$derived)让响应式显式可调试。
何时使用
选择 SvelteKit 用于内容 + 应用混合(博客 + 仪表板一站)、性能关键落地页和想要最小 JS 的小团队。避免设计系统(React 生态更大)或巨型 SPA。
如何做
示例
常见问题
- ⚠prerender + 动态数据 — load 用 request.url 构建失败,仅用 params
- ⚠Runes 仅在 .svelte — .ts 文件中 $state 报错,共享状态用 store
- ⚠adapter-static 需所有路由预渲染 — SPA 路由设 fallback
- ⚠Form action 重定向 — 必须 throw redirect(303, '/path'),非 return
最佳实践
- ✓用 runes($state/$derived)— 显式响应式、更好 DevTools、无魔法
- ✓每页自适应渲染 — 一应用中博客预渲染、仪表板 SSR、管理 SPA
- ✓用 Form actions 而非 API 路由 — 类型安全、CSRF 保护、渐进增强
- ✓作用域 CSS 优于全局 — 编译消除、无运行时、无命名冲突
常见问题解答
什么是SvelteKit 静态与服务端渲染?适合做什么项目?
SvelteKit 搭配自适应渲染(每页 SSG/SSR/SPA)、Svelte 5 runes 和零运行时 CSS。 它通过分层组合提供端到端类型安全与开箱即用的部署体验,适合从 MVP 到生产 SaaS 的快速迭代。
如何用SvelteKit 静态与服务端渲染在 10 分钟内跑通一个 demo?
两步起步:① 脚手架 — npm create svelte@latest myapp,选 "SvelteKit minimal";② Svelte 5 runes — $state、$derived、$effect 替代 let/export let。先跑通本地 dev server,再接一个真实数据源验证端到端链路。
SvelteKit 静态与服务端渲染 最常见的坑是什么?怎么避免?
最高频的坑是:prerender + 动态数据 — load 用 request.url 构建失败,仅用 params。避免方法:在 PR 模板里加入对应 checklist,CI 中跑类型检查 + lint + 单测,三重把关再合并。
SvelteKit 静态与服务端渲染 的最佳实践有哪些?
SvelteKit 静态与服务端渲染 的最佳实践包括:用 runes($state/$derived)— 显式响应式、更好 DevTools、无魔法;每页自适应渲染 — 一应用中博客预渲染、仪表板 SSR、管理 SPA;用 Form actions 而非 API 路由 — 类型安全、CSRF 保护、渐进增强。其中首条「用 runes($state/$derived)— 显式响应式、更好 DevTools、无魔法」应在项目初始化时就落地,避免后期返工。
什么情况下不该选SvelteKit 静态与服务端渲染?
三种情况另选他栈:① 团队对该栈核心框架零经验且工期紧张(学习曲线风险);② 项目是纯内容/营销站(选 Astro 更轻);③ 需要极高吞吐(>1 万 RPS)或强一致微服务(选 Go/Rust)。SvelteKit 静态与服务端渲染 的强项是中高复杂度全栈与 API,别在简单静态页上过度工程。