这个站点是怎么搭起来的
搭这个站点的时候,我给自己定了一条规矩:能少一个依赖就少一个依赖。
选型:反着来
主流做法是 Next.js / Astro / Hugo 之类,功能齐全。但一个只写文字的个人博客,其实不需要:
| 需求 | 常见方案 | 这里的做法 |
|---|---|---|
| 写文章 | CMS / Markdown + SSG | Markdown 文件 |
| 生成 HTML | 框架构建 | 一个 Python 脚本 |
| 样式 | Tailwind / CSS-in-JS | 一个手写 CSS 文件 |
| 部署 | CI/CD 流水线 | 一条 rsync |
| 依赖数量 | 几百个包 | 1 个(Markdown 解析库) |
整个站的形状
src/posts/*.md 写文章的地方
src/templates/*.html 页面模板
src/static/ 样式、脚本、图标
build.py Markdown -> HTML,顺便生成首页、RSS、sitemap
public/ 构建产物
写作流程就是:新增一个 .md 文件,跑一次构建。
./deploy.sh
# ✓ 内容自检通过
# → 已备份线上当前版本
# → 已部署 (git rev e639989)
# ✓ 落盘校验通过
# ✓ 线上响应 HTTP 200
刻意保留的「笨」
- 没有数据库 —— 内容就是文件,丢不了,也不怕备份
- 没有构建缓存 —— 全站构建 0.2 秒,缓存是负优化
- 没有评论系统 —— 想说话可以写信,或者当面说
- 没有统计脚本 —— 有多少人看,不那么重要
复杂度是一种负债,只是它的利息在很后面才显现。
那什么才是重要的
- 打开要快 —— 全站只有一个 CSS 文件,无 JS 也能读
- 能找回旧文 —— RSS + sitemap 齐全
- 改起来不疼 —— 十分钟能换掉整个配色
如果哪天这个站变得需要「维护」了,那大概说明我做错了什么。