收录于合集「建站手记」第 2 篇,共 2 篇
这个博客没有用现成的博客平台。原因很简单:我想知道每一篇文章最后落在哪里。
技术选择#
前台是 Next.js 的 Server Components,后台是同一进程里的 Route Handlers,数据放在一个 SQLite 文件里。对单作者博客来说,这套组合足够安静。
| 部分 | 选择 | 原因 |
|---|---|---|
| 页面 | Next.js App Router | 服务端渲染,首屏快 |
| 数据 | SQLite | 单文件、可备份、无需额外服务 |
| 样式 | Tailwind CSS | 设计 token 集中管理 |
| 部署 | 一台小机器 | 数据在自己手里 |
一段最小的查询#
文章列表的查询并不复杂,只需要保证草稿不会出现在公开页面里:
ts
const rows = db
.prepare(
`SELECT * FROM posts
WHERE status = 'published'
AND published_at <= ?
ORDER BY published_at DESC
LIMIT ? OFFSET ?`,
)
.all(now, pageSize, offset);
备份比部署更重要#
整个站点的状态只有两处:data/blog.db 和 data/uploads/。把这两个路径复制走,就完成了一次完整备份。
一个个人网站最好的架构,是半年后你还能看懂它。
接下来#
等文章多起来,也许会加全文搜索和图片压缩。但现在这样已经够用。工具应该退到内容后面。
