网站全面升级为纯Svelte!好处都有啥?都踩了哪些坑?
自2024年以来,本站一直使用 Astro/Fuwari 来开发,但从该项目不再是一个纯粹的静态博客站之后,基于Astro的开发也越来越艰难。今天,我们来聊聊这次大更新吧!

迁移来源:afoim/svaf
src/content/posts/astro-to-svelte/index.md,原项目 License 为 AGPL-3.0。
为什么要重构为纯Svelte?
这实际上是个复杂的问题。在2024年选择Fuwari作为本站框架实际上只是一个巧合,当时并没有顾虑到后续开发的问题。我当时选择Fuwari只有一个原因:好看。
另外,由于它基于Astro SSG,这使得它的SEO非常棒,所有页面都是静态HTML,无需服务端介入,即可同时实现:美观、SEO良好、快速 的博客站。
可见,我一直都在夸Fuwari,那我为什么要换掉它呢?
实际上,并不是Fuwari不好,而是本站渐渐从一个纯静态博客站逐渐变为了重客户端的全栈。随着功能增加,原有模式在维护和一致性上变得困难。
迁移!抉择架构!
在迁移阶段,最终确定采用 SvelteKit。最主要的原因是:旧项目里大量组件已经是 Svelte 写的,继续沿用能降低重构成本。
约束!防止史山!
迁移过程中,作者将旧仓库归档,并新建 svaf 仓库进行增量式重构,逐步将旧站能力迁移到新架构。
SvelteKit更像毛坯房
相对于 Astro/Fuwari 的大量开箱即用能力,SvelteKit 更自由,但也意味着很多能力需要自行搭建。作者最终通过脚本化流程完善了 Markdown 渲染、RSS、Sitemap、图片处理与构建流水线。