1. 背景 #
最近为博客添加了“memo”页面,初衷是容纳那些“不足以成文的灵光一现”。但遇到3个问题:
- 过往数据如何获取:之前的动态基本都是在即刻中,需要批量导出。
- 数据如何存储:现在的博客是没有后端服务的,博文可以一篇一个 md 文件,但动态不行,文件数量太多了。
- 数据如何更新管理:日常我有动态想法,总不能每次都打开 IDE,像写代码一样操作,再执行完整的部署更新流程,太重。
人会偷懒,所以我把问题交给了 AI。
2. 方案确立:不被过去捆绑 #
既然核心诉求是“轻量化”,而且我非常抗拒因为这个页面去引入一个真实的数据库(需要备份数据、防攻击,而且会拖慢网页加载速度)。
在跟 AI 探讨后,确定了无后端的两种路线:
| 方案思路 | 做法与优劣 |
|---|---|
| 借助代码平台的留言板功能 | 把动态展示当做代码存放平台的“缺陷留言(Issue)”。虽然免费不用搭服务器,但会导致我的主要仓库被杂乱的个人记录污染。放弃。 |
| 文件拆分组合 | 将代码存储库本身当做数据库,让每条动态独立为一个特定格式的文件。这样数据都在自己手里。采用。 |
目标很明确:我依然只想在纯文本里写日记,剩下的全都靠系统用脚本帮我归档组织。
3. 把想法变成现实 #
既然确定了思路,剩下的就是动手。我和 AI 很快把这几个问题给平掉了。
3.1 解决数据获取:魔改开源工具 #
原本看中了一个开源的即刻导出工具,结果发现它有不少坑:
- 只能导出 60 条数据,剩下的被作者上了付费锁。
- 导出的格式不对,给的是带排版的文本或表格,根本没办法用程序处理。
那就不废话了,我直接把它的代码拉下来改了。先把 60 条的限制给强行解除掉,然后再顺手加了一段代码,让它能导出一份最纯净、只包含内容的源数据文件。
3.2 解决数据存储:写个脚本全自动切分 #
源数据到手了,但几十万字的单文件显然不能直接用。 所以我写了一小段脚本:让它像切蛋糕一样,把这坨庞大的记录按月份切开,然后分别存进 2025-06.md 这样的独立文件里。
每条动态在文件里的结构也是极简的:
::memo
date: 2026-03-08
link: https://web.okjike.com/...
circle: AI探索站
::
“我先抓根因,不猜”Note
这其实就是用本地的文件夹和文件,手搓了一个极简版的“数据库”。不需要担心挂掉,也不需要刻意维护。
3.3 解决页面更新:让构建工具代劳 #
文本切分好了,最后一步就是怎么把它们显示在网页上。 传统的做法是维护一个大名单,有一条记录就添一项。这显然又违背了“偷懒”的原则。 所以这里用了一个讨巧的办法:利用博客自带的代码打包工具(Vite),让它在生成网页的时候,自己去文件夹里数一数有多少个记录文件,然后直接把内容塞进页面里。
至此,这个不带任何后端的“微客”页面算是搞定了。
4. 后续:如何优雅的发推 #
页面搞定了,那以后有了新想法怎么往里加呢?也就是开头提到的问题 3。
这部分的工作我打算交给代码托管平台的流水线服务(GitHub Actions)。 大概的过程会是这样:我只需要在手机上(借用捷径功能)发一段文字,触发一个网络请求通知代码仓库;仓库接到通知后,自动找出现在是几月,把这段文字塞进对应月份的文件末尾,然后保存并发出版。
用最轻量的方式记录思考,不给自己找麻烦。