这个站就是那次折腾的结果。试过 Hugo,也试过 Hexo,最后还是回到手写 HTML 加一个 CSS 文件,理由很朴素:我要的是能长期放着不动的东西,不是每个月都要升级依赖的东西。写完发现最难的不是页面,是坚持往里面加内容——前半年我一共只更新了两次。
一、先试了 Hugo
2025 年 11 月我想给这个站换个做法。起因很具体:那时候有二十来篇文章,每加一篇我要手动改三个地方——栏目页加一条、首页的最新更新加一条、有时候还要改归档。改到第三次我就烦了,想着上生成器是正解。
先试的是 Hugo。Windows 上用 scoop 装的,挑了个看起来最简单的主题,然后花了一个周末把二十来篇文章的 front matter 补齐。生成确实快,几十毫秒,这个体验很好。
问题出在我要改样式的时候。主题的配色、行宽、标签的样式我都不太满意,改着改着就改到 layout 模板里去了。那套 Go template 语法我一周不碰就忘,每次回去都要重新看 range 和 with 的写法。更让我犹豫的是有一次 Hugo 小版本升级,主题里用了一个被标记弃用的函数,构建时刷了一屏警告——我知道要去改主题,但我不知道改完下次升级会不会又来一次。
那一刻我的感觉是:我本来想省时间,结果现在在维护一个我没有完全理解的构建系统。作为后端工程师,我对「构建工具」这四个字已经够疲惫了,公司那套前端项目的 node_modules 和构建配置我每周都要碰,我不想自己的笔记站也变成那样。
二、又试了 Hexo
Hexo 是 12 月试的,Node 生态我熟一些,上手确实比 Hugo 顺。默认主题跑起来很快,我用了大概半个月,期间写了两篇。
放弃的理由也很具体。有天晚上我想改一下栏目页里条目的 HTML 结构,翻下去发现要先读主题的 ejs 模板,再看 Hexo 的 generator 怎么把数据喂进去,最后还要对一遍 config 里那堆配置项。那天晚上我对着屏幕想的是:我到底是在写网站,还是在学这个工具。
另外 npm install 之后 node_modules 三百多 MB,lock 文件里四百多个包。这个数字本身不是问题,但我清楚这意味着半年后我要重新装一遍环境的时候,大概率会碰到版本问题。我的笔记站要活十年,不是活半年。
三、回到手写:具体怎么做的
2026 年 1 月我决定重写,2 月上线,也就是现在这个版本。整个站的结构很简单:
- 一个 CSS 文件
assets/css/style.css,全部样式在里面,用 CSS 变量定义颜色、字号、间距 - 一个 JS 文件
assets/js/main.js,只做一件事:移动端的导航展开收起 - 六个栏目页(首页、三个栏目、关于、联系)加
posts/目录下的文章页,全是静态 HTML - 零外链:字体用系统字体栈,示意图用内联 SVG 画,没有 CDN、没有统计脚本、没有评论区
重复的部分怎么办,这个我犹豫过最久。页头和页脚在每个页面里就是复制粘贴的。最终我接受了这种做法:真要改的时候,用编辑器的全局替换一次改完,一共十来个文件,两分钟。跟学一套模板语法比,这个代价低得多。
加一篇文章的步骤现在是这样:复制一个已有的 posts/xxx.html,改 title、description、h1、面包屑、标签、上下篇链接,然后去对应的栏目页加一条。一共七个地方。我把这个清单写在便签上贴在显示器边上,因为我已经漏过两次了。
有人可能会问为什么不写个脚本自动生成。我故意没写。写了它,我就又回到「维护一个属于自己的构建工具」那条路上了——那正是我 11 月想逃开的东西。这点笨拙是我故意保留的。
四、几个我主动放弃的功能
搜索没做。要做就得建索引,要么引一个前端库,要么自己写一段 JS 加一个 JSON 文件。二十来篇文章,按栏目分组、按年份归档,我自己找东西够用了。等哪天文章过百再说。
评论没做。接第三方要引入外链,还得考虑隐私和垃圾评论;自己做后端就要有数据库,我一个人维护,不想再多一个要备份的东西。联系方式页留了邮箱,到目前为止收到过几封信,这个量我自己回得过来。
标签聚合页做了半个。标签现在是条目下面的一行文字,不可点。原因说出来有点丢人:我试做了一版,发现我自己的标签起得很随意,「复盘」和「职业」经常混着用,聚合页一建,这个问题就暴露在页面上了。等我把标签整理一遍再说。
深色模式也没做。CSS 变量是按浅色写死的,加一套 prefers-color-scheme 大概三十行,我一直没动手——因为我自己不开深色,做了也没法验证效果。这是个诚实的理由,不是什么设计理念。
五、最难的不是页面
页面两周就写完了。难的是往里加内容:2024 年 8 月开站到 2025 年 2 月这半年,我一共只更新过两次——一次是开站那一周连着写了两篇,一次是 11 月补了两篇。中间那几个月不是没东西可写,是每次想动笔都觉得「这点东西不值得写一篇」。
后来我改了标准:允许写三百字的短文,允许写到一半放着。所以才有了「实用知识」这个栏目,里面大部分是一句话结论加两三段说明。这个改动对更新频率的影响,比我换什么工具都大。
六、代价和一个还没解决的问题
代价前面说了:加一篇文章要改七个地方,容易漏。我漏过两次,一次是栏目页加了条目却忘了改文章页的上下篇链接,一次是复制的时候日期忘了改,把上一篇的日期留了下来。现在我发完会用浏览器把新页面和栏目页都点一遍,两分钟,当成发布流程的一部分。
还没解决的是图片。到现在我一篇配图都没有,需要示意图的时候就手写内联 SVG,画些条形图和方框。真要插照片或者截图的时候怎么办——放在哪个目录、要不要压缩、要不要做两套尺寸,我还没想好。先拖着,等第一篇真正需要图的时候再说。
顺便记一下,这个决定和我维护公司系统的思路是一样的:能不改的就不改,能不引入的就不引入。写在这里,也算是我自己那一套想法的又一个例子。