2023已至,玖涯博客又长了一岁,好似圆满了些许。维护博客的这些年,亦是新冠爆发的这些年,入门时添加的友链也都早已无法访问,清冷的界面又平添了几分萧瑟。

回顾这些年,发布的有价值的文章几乎没有,貌似逐渐已忘却了曾经的梦,做这些的意义到底是什么?我坚定相信自己是有收获的,但关于博客,唯一可以记录的便只有维护博客和 Dream 主题的这段旅程吧!

一、最初的一时兴起

2019年下旬,我开始着手于维护个人博客,逐步的将一些笔记发表在 CSDN 之上,在学习与记录的同时,也希望在网络上留下自己的痕迹。CSDN 中偶然的匆匆一撇,Hexo + GitHub 免费自建个人博客的方案异常显眼,吸引了贫穷的我。2019年11月28日,我注销并重置了 CSDN 账号,正式在 GitHub 搭建了第一个仅属于自己的个人博客。

不觉间,维护玖涯博客已过四年光景,此刻我任能感受到第一次部署成功时的欣喜,第一次购买域名时的纠结,第一次被搜索引擎收录时的兴奋。回想起这些过往此时的我依旧是悸动不已,那是曾经懵懂无知的自己。

Hexo 初识,其丰富的主题库便令让我赞叹不已,也曾游走于各种主题之间,一直在找寻一款契合自己的完美的主题。浏览了众多主题,唯 Icarus 独为我爱,这淡雅的风格让我爱不释手。

IcarusDream 的前世,Dream 最初的模块框架设计来源于 Icarus

Icarus 主题

二、漫漫美化路

在博客功能完善之后,我与众多热衷于个人博客的博主一样,也陷入了美化主题的漩涡之中。根据百度上的教程,为博客加入背景图和各种冗杂的特效。乐此不疲,惟愿追求心中至美。

hexo时的个人博客

渐渐的,静态博客的弊端开始显现,本地需要时刻维护主题源码、评论区无法与博客结合,发布文章慢等问题令我无法忍受。虽然有类似 hexo-admin 这类的工具,但终究与动态博客还是有着本质的不同。我在找一套动态博客系统,一个有 Icarus 主题移植版的博客系统。起初选了 typecho,但缘分让我又在 HaloIcarus 相遇。

Halo 移植版的 Icarus 主题比原版的更加简洁,乃至于可以称为简陋,但也为我提供了主题优化的基础,我以该版本为基础,不断补充完善了各种界面,增加了各种功能和特效。起初该主题为自用主题,也曾有博主希望获得主题源码,我会为他们实现主题效果提供帮助,但始终未提供过完整的主题源码。因为:

我希望我倾注心血而来的 Icarus 风格是独一无二的。

三、开源 Dream 主题

2021年8月13日,我决定将魔改后的主题开源,起名为 Dream,如果没记错的话 1.4.8 是我开源的第一个主题版本。

希望 Dream 能成为更多人博客梦开始的地方,并对自己热爱的事持之以恒。

Dream 1.4.8预览

个人博客是一个定制化需求较高的网站类型,不同博主对博客有着不同的风格要求。如何平衡好自己、用户和开源项目之间的关系,使一套主题同时能满足更多人的需求,这对于第一次维护开源项目的我来说是一大难题。

有时候我也会问自己,我喜欢的风格到底是什么?简约?炫酷?亦或是卡通?

为了满足更多人的需求,版本迭代的过程,也是不断删减主题开源前的个性化特点、增加配置项的过程。随着配置项无限制地增加,使用主题的配置难度也在不断攀高,每添加一个配置项都需要我在功能性与配置简洁度之间权衡,这逐渐成为了一个令我非常头疼的问题。

主题的配置界面

提供定制主题功能,允许用户配置插入自定义的样式和脚本,这是我能找到的、即满足定制化需求又避免增加配置项的最佳解决方案。所以,当用户提出过细的样式要求时,我会果断拒绝,这类定制化的需求应由博主在“定制主题”中自己实现。Dream 也将逐步记录和维护定制化脚本配置的方法,帮助有同样定制需求的博主实现定制化。

众口难调。

四、一次大的重构

曾几何时,Dream 是我的骄傲,它倾注了我许多精力,在我心中无限趋近“完美”,坐井观天式的美带来的终是虚幻。有许多优秀的主题进入了我的视野,JoeButterfly 等等,流畅的动画效果、完善的功能、高速的加载速度,无不令我震撼,Dream 和这些主题有着不可逾越的差距。那一刻,Dream 仿佛一场梦,努力好似显得有些可笑,也有一瞬间想过放弃 Dream 的更新,转而投入更加优秀的主题的阵营。

最终,我选择了重构,完全摈弃了原先的代码,从零开始。学习了优秀主题的开发方法和工具,参考借鉴它们的样式,也接触了 gulppjax 这些之前从未尝试过的工具、技术。今年4月18日主题发布 v2.0.0-alpha.1 版本,虽有数不清的问题,但也算初具雏形。

初始的 Dream 2.0 = Icarus 的框架 + Joe 的样式

Dream 2.0.0-alpha.1预览

之后迭代中,2.0.1 添加了 mew-* 自定义标签,2.0.2 添加了 halo-theme-dream 自定义评论区、2.0.5 添加了 ServiceWorker 支持。

部分自定义标签

Dream评论区截图

Dream 依旧在不断优化和完善中……

五、宣告 Dream 风格

一直以来,Dream 只是其它主题的影子,缺乏自己的特点。迭代中,也在不断尝试定义自己的风格,调整相册、页脚等模块的样式,实现图片上传、评论弹幕、横幅大图等功能。

完善主题的同时,也向用户宣告 Dream 的风格。

Dream 也结合 FreeMarker 模板的特点推出了一些特性,服务端对 pjax 进行适配、html 样式压缩,保证 Dream 的加载性能。为了提升主题的结合度,Dream 先后去除了目录、分享、加载进度条等开源插件,改为定制化实现,方才呈现出了如今的 Dream 主题。

Dream 2.0.9预览

六、让梦走得更久

开源 Dream 一年多,目前有 100+ 个 Star,也算是有所收获吧,借由这个开源项目,还白嫖到了 IntelliJ 的开源项目授权。

IntelliJ开源项目授权

在未来 Dream 也将不断的优化,对 Halo 的版本迭代进行适配,更新和运用现代化的前端开发方法。前端工程化的浪太大,第一次让我感觉技术更新迭代如此之快,不知其名的技术层出不穷,紧赶慢赶却依旧难以追逐它的脚步……

最后的最后,附上博客维护日志吧:https://blog.nineya.com/log

七、主题设计与鸣谢

如今之 Dream,我的付出只是其中微乎其微的一小部分,其中有很大一部分的代码实现和特效来源于个人博客和各类开源社区,源于广大开源博主的灵感共享。

感谢以下开源项目的贡献者:

项目名 作者 介绍
Halo halo-dev Halo 博客系统
hexo-theme-icarus ppoffice 三列布局的框架和基础样式最初来源于该主题
halo-theme-joe2.0 qinhua 部分模块的样式灵感来源于该主题
Live2D fghrsh 主题使用的看板娘插件从该插件修改而来
halo-comment-normal halo-dev Halo 官方提供的一个主题评论区模块,主题的评论区在该模块的代码基础之上修改而来
cursor-effects tholman 主题使用的鼠标点击特效来源
share.js overtrue 主题使用的分享插件在该插件基础上修改而来
Fan fan-lv 星空背景特效来源
MetingJS metowolf 用于获取网易云等平台音乐并进行播放的插件
APlayer DIYgod HTML5 音乐播放器

以上仅列举出了主题采用的部分比较特殊的开源项目,还有一些常用的开源工具或项目,例如 JQuerykatexvue 等,没有详细列举出来。

感谢 GitHub 以及每一位技术人员共同维护的一个良好的开源生态。

博客主题重点不在技术,更是前端美学与用户体验的集成。除以上开源项目以外,也非常感谢各位忠实于 Dream 主题的用户,以及为 Dream 主题迭代提供建议的博主。

八、是否收费与开源公益

曾有些博主会建议我收费,将主题移植到 HexoWordPress 等其他博客系统,这也将是一份收入。很感谢他们的建议,但目前我并不考虑。

我的专业不是前端,前端的基础知识并不扎实,移植和维护一套主题对于我来说并不轻松。想做的事太多太多,也缺乏时间移植和维护多套主题代码。目前维护 Dream 主题更多靠的是对个人博客的这份热爱,不为盈利,收到的捐赠转账,不分来源,不分金额将全部投入到公益捐款。

总有几份热爱,会成为你行动的理由,心甘情愿,不遗余力,不问付出,不问回报。

也许,未来的某一天主题会启用收费,但目前的想法是将主题的全部收入都投入到公益捐款,不做为个人收入。或者,我更希望能够践行我曾经有过的一种 开源公益 设想:代码开源,由社会共同维护,项目收益投入到公益活动,带动用户一起主动投入公益事业。

开源公益,这是一份来自代码的温度。

在很多时候,“公益”是恶人以疾病与苦难为由,对人间善意巧取豪夺的手段。他们收割善心,让世人变得冷血麻木,同时至他人生死于不顾。以上非指所有公益机构与基金会,但反面例子也确实不胜枚举,公益需要“锁链”,需要公开透明的监管。

基于区块链对公益资金进行可信存证,实现全流程全链路的可信公益捐款,这是我一直都想做的事,也希望自己能够立身践行。

科技为生活赋能。

技术手段,终是服务于社会方能彰显它的价值。

九、结语

一定会有意义非凡的事和人,会是自己奋斗的目标,不惧风雪,不畏艰难,2023逐梦前行。