背景
Koi 博客模板目前采用 Svelte(现为 v5)实现部分交互(如导航栏)。Svelte 5 引入了 Runes 等新响应式语法,并增加了运行时代码,这让 Svelte 不再主打「无运行时」特色。同时,Svelte 5 的工具链和生态问题在实际项目中浮现,包括 hook 复用困难、测试不便、生态库兼容问题、需要特殊文件后缀编译等。
现状分析
- 项目实际只用 Svelte 实现
HeaderNav.svelte,用于响应式导航与移动端菜单动画。
- 组件功能并不复杂,DOM 操作和交互偏基础,理论上可用纯 Vanilla JS 或其它框架实现(如 SolidJS、Preact、React 等)。
- 当前 Svelte 用法涉及少量状态管理、事件监听与动画,属于轻交互。
方案选项
-
Vanilla JS 实现
- 优点:零依赖,极致轻量,无运行时包袱。
- 缺点:代码略冗长、失去模板语法,但对当前规模影响有限。
-
迁移到其它轻量现代前端框架(如 SolidJS)
- 优点:保持组件化和响应式语法,生态更活跃,JSX/TSX 支持好。
- 缺点:增加一层依赖,但可能更现代、兼容性好。
-
暂时维持现状,仅修复已知问题
- 优点:无重构成本,继续复用现有代码。
- 缺点:需忍受 Svelte 5 的种种约束,未来风险保留。
对比分析
| 方案 |
上手/维护难度 |
运行时代码体积 |
工具链复杂度 |
演进可持续性 |
| Vanilla JS |
★★ |
★★★★ |
★★★★ |
★★★ |
| SolidJS |
★★★ |
★★★ |
★★★ |
★★★★ |
| Svelte 5 |
★★★ |
★ |
★ |
★ |
背景
Koi 博客模板目前采用 Svelte(现为 v5)实现部分交互(如导航栏)。Svelte 5 引入了 Runes 等新响应式语法,并增加了运行时代码,这让 Svelte 不再主打「无运行时」特色。同时,Svelte 5 的工具链和生态问题在实际项目中浮现,包括 hook 复用困难、测试不便、生态库兼容问题、需要特殊文件后缀编译等。
现状分析
HeaderNav.svelte,用于响应式导航与移动端菜单动画。方案选项
Vanilla JS 实现
迁移到其它轻量现代前端框架(如 SolidJS)
暂时维持现状,仅修复已知问题
对比分析