返回文章列表

给内容留一条慢路:为什么我用 Astro 写博客

博客不需要一整套后端。把文章在构建时变成静态页面,反而更接近写作应该有的节奏。

放着一台正在写代码的笔记本电脑的桌面

做这个博客之前,我列过一张技术选型表。候选方案包括带数据库的 Next.js、可以实时编辑的 CMS,以及最朴素的手写 HTML。每一个方案都能工作,但它们对“个人博客”这件事的想象并不一样。

我最终选择 Astro,不是因为它新,而是因为它愿意把很多能力留在构建阶段。文章是 Markdown,页面在发布前生成,读者打开时不需要等待数据库连接,也不需要为一套后台支付长期维护成本。

静态不等于简陋

静态站点经常被误解成“只能放几段文字”。实际上,搜索、标签、主题切换、阅读进度和 RSS 都可以在静态结构上完成。搜索索引在构建时生成,主题偏好保存在浏览器里,文章聚合则来自同一份内容集合。

const posts = await getCollection("writing", ({ data }) => !data.draft);
const ordered = posts.sort(
  (a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime(),
);

这段代码没有服务器,也没有隐藏的状态。每次发布时,它把全部文章重新读一遍,然后生成可以长期存在的 HTML。对我来说,这种确定性比实时更新更重要。

把复杂度放在正确的位置

写作真正复杂的地方在表达,不在部署。如果每写一篇文章都要考虑数据库迁移、接口权限和缓存失效,那么写作就会被基础设施吞掉。静态生成把这些重复决策提前做完,之后只剩下一个动作:新建 Markdown 文件。

当然,它不是万能的。需要登录、评论、实时协作或个性化推荐时,静态站点会显得拘谨。但至少在这个阶段,我想要的是一个能安静放文章的地方,而不是又一个需要运营的产品。

技术选择最终会塑造内容。用一条更慢的构建路径,换来更少的干扰,这笔交易对我来说是值得的。