1255 字
4 分钟
我的静态博客是怎么搭起来的
在动手之前,我先问了自己一个问题:这个博客一年会更新多少篇?
答案是二三十篇。这个数字基本决定了技术选型——任何需要长期维护数据库、缓存、后台的系统,对我的使用频率来说都太重了。
先想清楚:博客到底需要什么
我把需求列成一张纸,发现真正的刚需只有五条:
- 写文章时要快,最好是纯文本加少量语法。
- 打开速度要快,尤其是在手机上。
- 能自定义样式,不想被模板限制。
- 部署要简单,最好推一次代码就上线。
- 不需要登录、不需要后台、不需要数据库。
最后一条是关键。一旦不需要服务端状态,整个架构就轻了一大半。
为什么最后选了静态生成
常见的几种方案,我做了个简单对比:
| 方案 | 优点 | 代价 |
|---|---|---|
| 动态博客(带后台) | 在线写作方便 | 需要服务器和数据库,要维护 |
| 静态生成(SSG) | 纯静态、极快、托管便宜 | 写作和发布分离 |
| 纯手写 HTML | 零依赖 | 模板无法复用,改版痛苦 |
我选了第二种。文章用 Markdown 写,构建时统一套模板生成 HTML,部署时只是一堆静态文件。
顺带说一句,构建工具用的是 Astro,原因是它默认输出零 JavaScript 的静态页面,需要交互的组件才单独「激活」。对博客这种以阅读为主的站点,这个默认值很合适。
目录结构
结构保持扁平,几年后回来看也不会迷路:
my-blog/
├─ src/
│ ├─ content/posts/ # 文章,一篇一个 .md
│ ├─ layouts/ # 页面骨架
│ ├─ components/ # 卡片、侧栏、导航
│ ├─ pages/ # 路由
│ └─ config/ # 站点信息、主题色
├─ public/ # 图片等静态资源
└─ package.json
约定很简单:src/content/posts 里放一篇 Markdown,就有了一篇文章;文件名就是 URL。新增文章不需要动任何代码。
写作流程
我的日常只有三步:
# 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。
本文采用 CC BY-NC-SA 4.0 许可协议,最后更新于 2026-10-14。