最近拿一个旧博客主题仓库起了自己的新站,顺手把底座改成 Astro。最大的感受不是“新”,而是“省心”。
起点是什么
这次并不是在我自己已经写了很多年的旧站上做大迁移,而是从一个现成仓库起步。
起点是一个基于 TMaize 风格的 Jekyll 博客仓库。页面靠 Liquid 模板、_layouts、_includes、pages 和 _posts 这些目录拼起来,样式和交互则是一套很克制的极简主题。
这套东西不是不能用。问题在于,它每次想改一点结构,都要先和旧工具链商量一下:
- Ruby 依赖在 Windows 上并不算省心
- 页面、布局和生成逻辑缠得比较紧
- 想保留原来的视觉气质,却不想继续背着旧生成器
我真正想换掉的,从来不是那种冷静、稀疏、没什么废话的页面风格,而是底层那套已经不太顺手的维护方式。
为什么是 Astro
我没有打算把博客做成一个前端框架展示柜,所以选型时反而更在意“克制”。
Astro 最适合这个仓库的地方,不是它有多新,而是它刚好站在一个很顺手的位置上:
- Markdown 依然是一等公民,写文章的方式不用被迫改掉
- 默认输出静态文件,部署到 GitHub Pages 很自然
- 布局、页面、内容分层清楚,后面继续整理不会太痛苦
- 需要组件能力时可以慢慢加,不需要时就老老实实做静态站
- 路由和构建产物更容易控制,连旧站那种
.html风格链接也能继续保住
换句话说,Astro 给我的不是“花哨能力”,而是一个更现代、但又不会喧宾夺主的外壳。
怎么平滑接手并改成自己的
这次初始化没有追求推倒重做。我更在意的是先把这个 fork 来的骨架稳稳接住,再把脏的、老的部分一点点换掉。
做法大概是这样的:
- 保留原本的视觉方向,不把首页硬改成卡片流产品页
- 把公共结构拆成
BaseLayout和PostLayout - 把站点标题、菜单、域名、页脚这类全局信息收进
site.ts - 把文章统一收进
src/content/posts - 把原来的静态资源搬到
public/static,再逐步清理旧脚本和旧命名 - 把分类、搜索、RSS、sitemap 这些能力在新底座里重新接起来
这样做的好处是,新站初始化时不会一下子把原来那套辨识度打碎。
打开首页时,还是那个深色背景、左上角圆形头像、右上角横向导航、按年份归档的列表;但往下看代码,已经不再是原来那套 Jekyll 目录和 Ruby 工具链了。
这次最在意的点
我并不想把站点做成一个花里胡哨的产品页,所以迁移时优先保住了这些元素:
- 深色背景
- 左上角圆形头像
- 右上角横向导航
- 首页按年份归档
- 文章页的极简排版
我并不觉得“现代化”一定意味着做得更满。对博客来说,很多时候少一点花样,反而更耐看。
初始化之后最明显的变化
真正让我觉得舒服的,不是页面突然变酷了,而是后面继续维护时终于不再和旧环境拉扯。
- 本地开发更直接
- 构建链路更清楚
- 页面和内容的边界更清晰
- 后面继续补搜索、文章元信息或者小组件时,心里更有底
如果后面还要继续折腾,我想补的不是花哨动画,而是:
- 更稳的搜索
- 更顺手的文章元信息
- 更干净的构建流程