· 1 分钟阅读
为什么我的博客是一堆静态文件
朋友问我博客用的什么框架,我说:一个 400 行的 Node 脚本。他沉默了大概三秒。
静态站的取舍
动态 CMS 的好处是"改内容不用碰代码"——登录后台,写,发布。代价是你得养一个数据库、一个运行时、一套安全补丁,以及一个总在半夜挂掉的服务器。
静态站的逻辑正好相反:
| 项目 | 动态站(WordPress 等) | 静态站(本站) |
|---|---|---|
| 服务器 | VPS + PHP + MySQL | 免费 CDN |
| 被攻击面 | 插件、后台、数据库 | 几乎没有 |
| 每月成本 | $6 起 | $0 |
| 改样式 | 找主题、改子主题 | 改一个 CSS 文件 |
| 写作体验 | 浏览器后台 | 本地 Markdown |
对个人博客来说,最后一行是关键:内容本来就在本地。我在编辑器里写 Markdown,node build.mjs,推送,结束。
它是怎么工作的
整个"框架"就是三步:读文件、套模板、写出去。
const posts = loadPosts(); // 读 content/posts/*.md
for (const p of posts) {
write(`posts/${p.slug}/index.html`, // 套模板写出去
layout({ title: p.title, content: renderMarkdown(p.body) }));
}
没有依赖,所以 npm install 都不用跑。Cloudflare Pages 上的构建时间是 4 秒,其中 3 秒是它在装 Node。
那不方便的地方呢
诚实地说:
- 不能在手机上写——除非把仓库挂到 GitHub 网页版
- 没有评论——需要的话接 Giscus(基于 GitHub Discussions)
- 搜索结果没有——文章多了再上 Pagefind
- 图片要自己压——没有自动缩略图
这些都是可以按需加上去的,而不是一开始就必须吞下的复杂度。先写起来,比先搭好更重要。