博客
前端
用 Astro 岛屿把博客做成一个个人数字空间
为什么这个站点不是「又一个博客」:静态输出、岛屿交互、内容集合驱动,以及一条可以一直迭代下去的路线。
4 天前 1 分钟读完 421 字
大多数个人博客最后都停在同一个样子:一篇篇文章,加上一个越来越久不更新的「关于我」。我想要的是一个可以持续生长的空间——文章只是其中一块,项目、收藏、数据看板都能落在同一套视觉语言里。
三个约束
- 内容必须能躺着维护:新增一篇文章就是新增一个 Markdown 文件,不需要改任何代码。
- 首屏必须快:没有客户端路由,没有运行时框架预热,HTML 直出。
- 交互要克制但真实:主题切换、筛选、播放器这些确实需要状态的地方才上 JS。
为什么是 Astro + Vue 岛屿
Astro 负责把页面编译成纯 HTML,Vue 只出现在需要交互的局部。一个主题切换按钮的成本大约是 1.5 KB gzip,而不是把整个框架塞进首屏。
// 首帧前写入主题,避免闪白
document.documentElement.dataset.theme = resolved;
同一页里,静态的卡片留在 Astro 里,需要键盘导航的 Tabs 才升级成岛屿。这个边界如果一开始就划清楚,后面加功能时就不会慢慢退化成 SPA。
内容集合是骨架
文章、项目、收藏都定义成 zod schema,构建期校验。字段错了直接构建失败,而不是上线后才发现某篇的日期是字符串。
内容层的价值不在于「能渲染 Markdown」,而在于它让数据形状变成可执行的约定。
下一步
按迭代计划:首页 Dashboard → 博客列表与详情 → 关于页与响应式收口。每一轮都保持「可上线」状态,而不是攒到最后一起来。
相关文章
文章目录