这篇记录一次站点重构:把博客从手写 HTML 换成 Hugo + Blowfish,并说明为什么值得换、过程中改了什么。
为什么要换#
最初的文章是手写 HTML 的:每加一篇都要自己搭页面骨架、维护右侧目录锚点、再回头改首页的文章卡片列表。删掉一个章节时,还得记得同步清理目录里对应的锚点,否则页面上会留下点不动的死链。
这些活本身不难,但都属于「结构性维护」——它不产生内容,却每次都要重复,而且极易漏改。文章一多,维护成本线性增长。
换成什么#
Hugo 是静态站点生成器,文章写 Markdown,构建时生成 HTML。主题选了 Blowfish,主要看中几点:
- 分类体系是核心功能:在文章的元信息里写
categories和tags,分类页、标签页、系列页、归档页全部自动生成,不需要手工维护任何列表文件。 - 搜索不需要服务器:构建时生成一份索引,浏览器里用 Fuse.js 做模糊匹配,纯前端运行,没有后端也没有数据库。
- 面向内容的组件齐全:系列文章、相关文章、多级目录、代码复制、数学公式、图表、暗色模式。
迁移做了什么#
原有文章用 HTML 解析器转成 Markdown,而不是用正则替换——正则处理嵌套结构容易出错,章节边界会切歪。
原有排版都映射为 Markdown 等价写法:
| 原写法 | 转换后 |
|---|---|
| 提示框 | 引用块 |
| 字段说明 | 表格 |
| 步骤列表 | 加粗编号行 |
| 核对清单 | 任务列表 |
图片连同文章放在同一目录,正文用相对路径引用,构建时自动生成多尺寸版本。
效果#
一篇文章、一个分类、五个标签、一个系列,构建后自动派生出 25 个页面。新增文章时只需写一个 Markdown 文件,分类和标签页会自己出现。
结论#
判断要不要上生成器的标准,不是「是不是静态站」,而是有多少结构是重复劳动的。如果每加一篇都要手动同步多处,那就是结构在收税;交给生成器派生之后,维护成本与文章数量解耦。