1255 字 4 分钟

我的静态博客是怎么搭起来的

我的静态博客是怎么搭起来的

在动手之前,我先问了自己一个问题:这个博客一年会更新多少篇?

答案是二三十篇。这个数字基本决定了技术选型——任何需要长期维护数据库、缓存、后台的系统,对我的使用频率来说都太重了。

先想清楚:博客到底需要什么

我把需求列成一张纸,发现真正的刚需只有五条:

  • 写文章时要快,最好是纯文本加少量语法。
  • 打开速度要快,尤其是在手机上。
  • 能自定义样式,不想被模板限制。
  • 部署要简单,最好推一次代码就上线。
  • 不需要登录、不需要后台、不需要数据库。

最后一条是关键。一旦不需要服务端状态,整个架构就轻了一大半。

为什么最后选了静态生成

常见的几种方案,我做了个简单对比:

方案优点代价
动态博客(带后台)在线写作方便需要服务器和数据库,要维护
静态生成(SSG)纯静态、极快、托管便宜写作和发布分离
纯手写 HTML零依赖模板无法复用,改版痛苦

我选了第二种。文章用 Markdown 写,构建时统一套模板生成 HTML,部署时只是一堆静态文件。

顺带说一句,构建工具用的是 Astro,原因是它默认输出零 JavaScript 的静态页面,需要交互的组件才单独「激活」。对博客这种以阅读为主的站点,这个默认值很合适。

目录结构

结构保持扁平,几年后回来看也不会迷路:

bash
my-blog/
├─ src/
│  ├─ content/posts/      # 文章,一篇一个 .md
│  ├─ layouts/            # 页面骨架
│  ├─ components/         # 卡片、侧栏、导航
│  ├─ pages/              # 路由
│  └─ config/             # 站点信息、主题色
├─ public/                # 图片等静态资源
└─ package.json

约定很简单:src/content/posts 里放一篇 Markdown,就有了一篇文章;文件名就是 URL。新增文章不需要动任何代码。

写作流程

我的日常只有三步:

bash
# 1. 新建文章(自动带上 front-matter 模板)
pnpm new-post

# 2. 本地预览,写完就能看到效果
pnpm dev

# 3. 推到远端,平台自动构建并发布
git add . && git commit -m "post: 新文章" && git push

front-matter 我只保留必要的几个字段:标题、日期、描述、分类、标签、封面。字段越少,写的时候越不容易犹豫。

部署

静态站点最适合交给托管平台。我选的是「连上仓库、填一条构建命令」就能用的那种:推代码、自动构建、几秒钟后线上就更新了。

整个过程不需要碰服务器,也不需要配证书。对一个个人博客来说,这已经足够了。

一些取舍

技术选型没有银弹,我也放弃了几个看起来不错的东西:

  • 放弃了在线编辑器。 现在写文章要打开编辑器,但换来的是版本可追溯、内容永远在自己手里。
  • 放弃了评论后端。 一开始觉得很可惜,后来发现读者更愿意直接发邮件,反而聊得更深。
  • 放弃了「什么都能配」。 主题配置项越多,改起来越纠结。最后只留下主题色、站点信息几个开关。

半年下来,我对这套方案最大的感受是:它足够无聊。没有需要盯着的内存,没有半夜要重启的服务,写完推送就结束了。

对一个业余项目来说,「无聊」大概是最好的评价。

版权说明:本文作者 王强,首发于「拾光笔记」。转载请注明出处,禁止商用。
本文采用 CC BY-NC-SA 4.0 许可协议,最后更新于 2026-10-14。