这个站点本身就是个例子。让我说说为什么选 Zola。

个人站的本质矛盾

我对个人站的诉求其实有一组互相拉扯的需求:

  1. 写得舒服:用 Markdown,本地编辑器,不要登录任何 Web 后台
  2. 样子长得对:自定义到我满意为止,不被模板绑架
  3. 跑得快:访客打开是瞬时的
  4. 维护成本低:我不想为了一个博客天天升级运行时
  5. 东西是我的:内容、样式、域名都在我能控制的地方

托管服务(Notion、Substack、Medium)能满足 1,但 2/5 妥协; 传统 CMS(WordPress、Ghost)能满足 1/2,但 4 灾难(每次升级都是事故); 自建后端能满足 2/5,但 4 永远在你头顶悬着剑。

静态站点生成器是这组矛盾的最少违约解: 内容是文本,构建是离线,部署是丢一堆 HTML 到任意 CDN —— 然后忘了它。

为什么是 Zola

Hugo、Jekyll、Astro、Eleventy 都能干这件事。我选 Zola 的理由:

1. 单一二进制,无运行时依赖

Zola 用 Rust 写,编译成一个静态可执行文件。 不需要装 Node、Ruby、Python,不需要 npm install 等十分钟。 到一台新机器,下载一个 13MB 的文件,就能开始用。

这件事在五年后会变得越来越重要 —— 因为五年后我已经忘了任何关于 Node 版本管理的细节。

2. 构建快得不需要琢磨

我测过:千篇文章规模的站点,Zola 全量构建是秒级的。 这意味着 zola serve 期间的修改 → 看到效果,是亚秒级反馈。 反馈循环短,是工作流是否真的舒服的核心指标。

3. 内置了我会用的所有东西

  • Sass 编译
  • 语法高亮(Syntect,内置 Solarized 等好几个主题)
  • 全文搜索索引
  • 多语言
  • Taxonomies(标签、分类)
  • RSS / Atom feed

这些 Hugo 也有,但 Zola 的 API 表面更小 —— 文档一晚上能读完。

4. 没有插件系统

这听起来像缺点,其实是优点。 没有插件系统意味着没有插件腐烂: 不会出现「这个站点能不能跑,取决于五年前某个开发者还有没有在维护他的 GitHub repo」。 所有功能都是 Zola 自己保证的,由 Zola 自己升级。

对个人站这种「一次搭好用十年」的项目,这是最重要的属性。

不推荐 Zola 的情况

老老实实说:

  • 你需要复杂的交互组件(购物车、评论、实时数据) —— 用 Astro / Next.js
  • 你已经在 Hugo 生态里有大量主题资源 —— 不必换
  • 你只是想最快开始写 —— 用 Notion 或 Substack,等真的不够用了再说

但如果你的目标是: 搭一个长得像你自己、跑得飞快、十年后还能不动一行代码地继续用的个人站, Zola 是我目前找到的最好答案。


这个站点就是这样搭起来的。 源代码会在打磨得差不多之后扔到 GitHub,欢迎拿去改。