我的第一个主题

2023/03/06
共 1.1k 字
约 3 分钟
归档: 技术
标签: Hexo

总是希望再完善一下再发布,但这种事永远不会有完美的时候。所以在大部分功能已经可用的情况下,先给自己博客换上了。

从 Hexo 说起

这篇不会有太多主题配置,以后会专门写一篇使用文档。

刚接触 Hexo 时,不懂 node,不知道包管理,甚至连 EJS 是模板引擎都不知道,更别说 Hexo 的各种钩子了。修改一个菜单举步维艰,为了一个汉堡菜单引入了整个 Bootstrap 框架,把想要的功能实现就不容易了,哪里会考虑性能优化。懂得更多了的现在,我本该选择速度更快的 Hugo 或者 Astro ,因为并没有用到非常多的定制化的标签,把 Markdown 文档迁移到其他博客系统的成本并不高。但升级到 6.3.0 之后,觉得 Hexo 的生成速度还是可以接受,甚至有点惊喜,最终还是选择了留下来,或许这就是一种情怀吧。

我想要的主题

换一个功能比较完善的主题,其实是最省时的做法。但想要自己加点功能的时候,还是得看懂新主题的代码,这似乎跟现在的困境没什么两样。功能丰富,难免臃肿,与其用别人的,不如自己写一个。

也曾想过在现有基础上改改,但是看到有 jQuery 的时候,咬咬牙,还是决定自己做一个。既然是自己动手,那我自己至少有几点要求:

  • 现代,充分利用 IntersectionObserver 这样兼容性还不错、性能更优的 API

  • 轻快,选库时依照够用的原则,选择体积更小,速度更快的框架

  • 强大,简洁而不简单,官方的主题板块不乏极简的主题,但都过于简洁了,缺少目录跳转,搜索这样的功能,使用上还是挺不方便的

现在与将来

现在做成什么样了?
主题整体依然是 Yilia 的布局,但代码几乎是从零开始。有一个稍微与众不同的相册板块,结合了瀑布流+懒加载,这可能是我踩过最多坑,但也是我引以为豪的一个板块。相信像下面这样组合的人少之又少,但其实都是些非常优秀的库:

  • 加入了心心念念的全局搜索;

  • custom-builds 构建我的 lodash;

  • icones 导出只有博客用到的图标;

  • Macy 实现更合理的瀑布流;

  • Izmir 中拆出我想要的动画效果;

  • lozad 代替 hexo-lazyload-image 做懒加载;

  • tiny-slider 代替 swiper

  • 看到 Next 的动画觉得体验非常不错,所以找到了 Aos 优化滚动动画;

  • localforage 做持久化本地存储,主要存储搜索用到的 json 文件,写了一个 generator 生成版本号,这样就可以配合版本号来更新;

考虑过 underscoreYou don’t need Lodash/Underscore,最后选择兼顾精简与易管理的自定义构建;做懒加载时,甚至联系过作者添加一个回调函数,方便瀑布流的重新计算,虽然最后选择了 loazd,但还是特别感谢 hexo-lazyload-image 的作者的及时跟进;尝试过多个瀑布流的库,但觉得 masonry 体积过大,而 bricks 又有着我暂时解决不了的抖动问题,最后还是选择 Macy。这时候就深切感觉到,不是 star 多就好,只有适用与更适用

当然,其实最重要的一点是拥有完全自主的定制权。最初选择自己搭博客,而不是微信公众号、掘金这样的平台,就是因为自由度高。一个由我自己敲出来的主题,要改哪一部分,都得心应手;看到什么有意思的功能,不用去看主题有没有适配,我自己集成便是。

其实还想做时间轴这样的功能,估计会用 Hexo 的标签,方便在文章中直接插入;轮播图、标签云、日志等还有很多细节都还还在进行中,还考虑加上搜索历史。

加油吧(ง •̀_•́)ง

留言

本站已运行
© 2024 Jack  由 Hexo 驱动
复制成功