这是这个站的第一篇文章,所以按惯例应该解释一下它怎么来的。

我把博客换过五次。每一次都以为找到了“对”的方案。

五次尝试

第一次是 WordPress。 装完很开心,两天后开始担心插件漏洞和数据库备份,第三周放弃了。我写的字还没有我配置的时间多。

第二次是 Hexo。 静态了,很好。但主题改起来要读别人的模板,_config.yml 有八十个选项我只需要五个。

第三次是 Hugo。 快得惊人,1700 篇文章一秒构建。但我只有十几篇。速度快带来的好处我根本用不上,而 Go template 的语法每次都让我查文档。

第四次是 Notion 公开页面。 零维护,写完就发。直到我发现它在国内加载要三秒,而且我的域名只是个跳转。

第五次是自己写了个 Node 服务 + SQLite。 这次是过度设计:一个只有我看的博客,我给它做了后台管理、草稿箱、定时发布。三个月后我忘了怎么部署。

这次的方案

现在这个站是一百多行 Python:

content/
  site.yaml        # 站名、标语、社交链接
  projects.yaml    # 项目清单
  posts/*.md       # 文章,front matter + 正文
  about.md
templates/         # Jinja2 模板
build/build.py     # 生成器

跑 python build/build.py,产出 dist/。扔给 nginx。完事。

整个链路里没有一个依赖会自己更新,没有一个服务会下线,没有一次请求会打到别人的服务器。

这个方案好在哪

加一篇文章 = 丢一个 md 文件。 不用改代码,不用重启,不用打开后台。

加一个项目 = 往 YAML 里加一条。 首页的卡片、项目页的分组、导航里的计数,全自动跟着变。

改全站文案 = 改 site.yaml 里的一个字段。

这三条就是我说的“可扩展性”。不是能撑十万访问量那种扩展性——我根本不需要那个——而是下个月我还愿意往里加东西的那种扩展性。

它不好的地方

诚实地说:

  • 没有评论。想要的话得接第三方,而我暂时不需要——想聊可以写信。
  • 没有搜索。文章少的时候用浏览器 Ctrl+F 够了。超过五十篇再说。
  • 改了 md 要手动跑构建。我愿意接受,因为这意味着我写完就是发完。

一句话

工具的复杂度应该匹配问题的大小。

我的问题是“把自己的字放到网上”。不是“运营一个内容平台”。想清楚这一点之后,选型就不难了。