这是这个站的第一篇文章,所以按惯例应该解释一下它怎么来的。
我把博客换过五次。每一次都以为找到了“对”的方案。
五次尝试
第一次是 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 要手动跑构建。我愿意接受,因为这意味着我写完就是发完。
一句话
工具的复杂度应该匹配问题的大小。
我的问题是“把自己的字放到网上”。不是“运营一个内容平台”。想清楚这一点之后,选型就不难了。