最近阿普修换了一个新的主题,是他自己写的。其实在博客圈里,换个主题并不是什么稀罕事,很多人隔三差五就折腾一次,图个新鲜感或者优化体验。但关键在于,阿普修这个主题不是拿别人的模板改的,而是完全从零开始自己写的,而且写出来之后,满屏都是 BUG。作为一个朋友,我自然订阅了他的 RSS,想着第一时间关注他的更新动态,结果没想到,RSS 的问题比主题本身的 BUG 还要严重。刚开始我还以为只是偶尔的格式错乱,后来才发现,这根本不是小毛病,而是一个彻底没考虑过 RSS 规范的设计缺陷。说实话,看到这种情况,我是真的替他着急,也替自己的阅读器捏了一把汗。

先说说我的研究结果。首先是 RSS 部分,他直接把所有文章——没错,是全部——都一股脑地写进了 RSS 里。你知道这有多恐怖吗?一般来说,不管是我的博客还是其他人用的 Hexo 博客,因为插件或者配置的默认限制,RSS 通常只会输出最近 20 篇文章,这是为了避免给阅读器造成过大负担。但阿普修倒好,全量输出。这意味着什么呢?每次他更新一篇博客或者发一条说说,整个 RSS 源就会被完整刷新一遍,所有文章和说说就像新的一样重新推送一次。你的RSS阅读器会以为你从来没读过这些内容,于是一遍又一遍地给你推送同样的文章。关键是阿普修更新频率还特别高,一天好几条,我的阅读器都快被他吵炸了。

关键是,这玩意不应该独立出来做个插件什么的吗?比如用 Hexo 自带的 RSS 生成插件,稍微配置一下就能限制篇数、控制输出格式,根本不会出这种问题。但阿普修没有,他真的是在“造轮子”——自己手写 RSS 生成逻辑。你知道富二代最怕的是什么吗?不是花光你的钱,最怕的就是他自己创业。因为花的钱最多,最后赚的很少,还可能亏得一塌糊涂。阿普修做主题也是这个道理,自己写 RSS,费力不讨好,还把别人的阅读体验搞砸了。不行,作为朋友,我得帮个忙,不能眼睁睁看着他这么折腾下去。

我分支了这个主题之后,第一件事就是优化 RSS 逻辑。等等,我突然反应过来——主题和网站代码居然是混在一起的?也就是说,我分支的不只是主题,而是他整个网站的代码库?这架构也太随意了吧。唉,那没办法了,我还得先发一篇 Issue 告诉他先别更新,避免到时候我改了代码,他又在那头提交新内容,产生仓库冲突。做完这些之后,我才敢放心地把主题仓库下载到本地,慢慢修改。虽然麻烦了点,但总比看着他继续用那个把所有人 RSS 阅读器刷爆的主题要强。

折腾了一会儿,RSS 的逻辑总算是搞对了,不会再全量推送了。正当我松了一口气,准备收工的时候,诶,好像没有暗色模式?现在的博客如果没有暗色模式,晚上看真的会亮瞎眼。不过 DeepSeek 告诉我说,他其实写了暗色模式,只是需要我自己手动切换。我切换之后一看——哇,这暗色模式就像压根没写一样,背景灰不灰白不白的,文字对比度几乎为零。那没办法了,既然看到问题了,我就顺手修这个吧,反正已经开始改了。

又折腾了好一会儿,总算是把首页的暗色模式忙完了。背景、文字、链接颜色都调到了勉强能看的程度。接下来我看看文章页面的效果……不是,哥们?主题不是你自己写的吗?怎么你的代码块背景居然是写死的白色?暗色模式下简直像开了个探照灯。没有关系,我改,改还不行吗?我把背景、边框、代码高亮的颜色全部重新适配了一遍,终于折腾完了文章页面。接下来我打算看看别的页面,心想首页和文章页都搞定了,剩下的应该问题不大吧?

啊?哥们,你这主题还真是自己写的啊?要不是完全从头写的,问题都不可能那么多。这不,说说页面又出问题了——背景颜色直接写死,暗色模式下惨白一片。那友链页面呢?完了,彻底没救了,友链页和评论区都还是白色,完全没继承暗色模式的变量。你猜猜看统计页面是什么情况?也是白色的。也就是说,整个主题里,暗色模式只覆盖了首页的一部分,其他页面基本处于“裸奔”状态。这哪里是暗色模式,分明就是个半成品演示版。

我寻思我以前用周良做的 ZenMind 主题,都没这毛病。一来,周良那个是基于 OnePaper 主题改的,不算是完全从零自研……暗色模式?他自己都没打算搞暗色模式;二来,那个主题是个极简主题,不追求花里胡哨的特效,代码结构清晰,改动起来很舒服;三来,周良是个 2013 年就开始写博客的产品经理,见过各种坑,知道什么该写死、什么该用变量。对比之下,阿普修虽然热情很高,但显然还缺了不少实战经验。

写主题和美化主题,真的是两回事啊。前者讲究的是不破坏原始页面结构,仅在用户启动后通过加载机制覆盖样式,随时可以卸载或切换;后者往往是大程度地破坏页面结构,直接在源文件里写死样式,导致你的 SEO 和网站图标都可能出问题。不是,哥们?阿普修的网站那可是在谷歌能搜到的,这一通写死操作下来,搜索引擎爬虫怕是连导航都分不清了,SEO 基本等于被大程度破坏。说实话,看到这里我已经不是吐槽了,是真替他担心。

正是因为之前我自己也打算写主题的时候,遇到过类似的“写死”问题,踩过不少坑,所以我才会格外注意这些乱七八糟的细节。你们再猜猜看,阿普修这个主题上还有什么是写死的?对啦,连导航栏都是写死的——菜单项、链接、顺序全在代码里硬编码,没法通过配置文件修改。惊喜不惊喜?惊吓不惊吓?所以说,看到这种情况,我是真的有点怕。怎么说呢,不是否定他写主题的热情和能力,而是这种“全写死”的思路,一旦要改或者扩展,代价会非常大。

现在有句话已经铭刻在我的脑海里了:如果你是一个富二代,最好就是保持现状。你千万不要瞎改你老爸公司的规矩,因为你不懂里面的门道。你看,娃哈哈那个女儿上来之后,就把类国营制度改成了西式制度,内部管理、渠道政策全都动了,结果直接把娃哈哈送上了热搜,负面舆论铺天盖地。反正作为一个普通消费者,我估计再也不买娃哈哈了。做主题也是一样的道理,在你没有完全搞懂RSS、暗色模式、变量分离、SEO这些东西之前,最好先用成熟的框架或者模板,慢慢学,不要一上来就自研全套。否则最后累的是自己,坑的是别人。

你们猜猜最后我提交主题到 GitHub 的时候,发生了什么事?更搞笑的是,我居然是通过自己的 RSS 阅读器,收到了他发布安卓版客户端的消息,讽刺吧?名正言顺说自己的网站前端不好,于是搞了。不过讽刺的笑话咱先放一边,关键是整个仓库结构又变了,而且你这主题做成这样——RSS 全量推送、暗色模式只覆盖首页、代码块背景写死、导航栏硬编码——自己用就得了,折腾折腾自己的网站也没人管你。可你为什么还发出来跟别人说,还放到 GitHub 上标了个“开源”?不光是体验差,关键是别人想给你提 PR 修 BUG,都找不到入口。