Hexo建站体验

前情提要

经过几天的调整,这个使用Next主题运行的GitHub Pages上的Hexo系统基本上可以正常运行了。

环境介绍

Hexo是静态blog系统,简单来说就是这东西会先把你写好的东西渲染成html文件,再交给httpd监听。Hexo本质上是一个后台,最终展现出来的效果大量依赖主题和各类第三方模块。

Next是Hexo的一个很著名的主题,在配置文件中内置了大量的功能,让用户可以在尽量少接触代码的情况下完成站点管理。

GitHub Pages给用户提供了一个简单的httd实例,允许用户运行简单的网站。

接下来就简单讨论一下整体建站体验和一些使用细节。

Hexo优缺点

优点

  • 静态页面确实快
  • 支持很多部署方式
  • 文档非常成熟
  • 利用GitHub Pages建站可靠性好
  • 生态系统不错

缺点

纯粹为工程师服务

不论是github建站、vps上面跑git还是其他部署方式,本地操作-部署-在线运行的模式对于站长来说无异于脱了裤子放屁。

而对于只是想找个环境写写字的用户,这种操作逻辑根本无从下手。

不存在多用户创作

Hexo根本没有考虑多用户,有一些旁门左道的办法可以实现,但是相信我,能看懂怎么做的人都自己建站了。

核心功能缺失

大量对于blog来说非常基础的功能都要依赖第三方的插件或服务,甚至连评论系统都欠奉。

一方面,一个系统引入的外部组件越多,各组件之间的版本兼容关系就越复杂,集成需要的调试也越多,后续需要编写的文档就更多。

另一方面,依赖第三方服务,整个系统的可靠性就会受到更多单点的影响,而且产生的数据也很难集中管理和保护。

没有可视化后台

这是纯粹为工程师设计的结果,没有所见即所得,更没有文章、页面管理的功能,你要做的是版本管理。

重点讨论

评论系统

由于Hexo不存在评论系统,很多外置的评论系统应运而生,这些评论系统分成三个阵营。

GitHub Issues类

这类评论系统,会把所有评论作为issue处理。

这样做的好处是GitHub作为一个可靠的环境,你的评论数据是很难丢失的。

但是很明显,这些系统是依赖GitHub的,同时读者没有办法进行匿名评论。从某个角度说,利用issues存放评论算不算对GitHub的滥用?

无后端类

以valine为代表的无后端类评论系统,虽然提供更强大的功能,但同时会引入更多后端。

以waline为例,官方快速上手文档使用LeanCloud创建数据库,并在Vercel中部署server,最后在Hexo中引入客户端,就这样,一个无后端的东西就给你增加了两个后端和一串html代码。

当然你也可以选择其他的serverless服务或利用vps独立部署,但是这斌不会减少运维成本。

第三方服务

用过blogspot的朋友一定还记得disqus,功能强大,可以更好的管理评论,同时用户很少需要考虑运行状况。

但是这类服务就怕跑路,万一哪天它不干了,你还要考虑系统迁移。

放弃

当然你也可以选择放弃。

放弃这种方式,具有无数据、无后台的巨大优势,适合不打算听别人怎么说的用户。

主题

不仅是视觉效果,Hexo的前端功能全部依赖主题实现,搭配不同主题,Hexo就是完全不同的维护和阅读体验,因此选择主题可能才是一切的开始。

优秀的主题应该具有以下特征:

  • 通过配置文件实现快速自定义
  • 基于data files进行深度自定义
  • 自带常见评论系统集成
  • 持续更新
  • 文档全面

数据存放

很显然,如果你是在GitHub Pages上部署Hexo,你不应该把媒体文件一并上传到repo里,这不仅是因为容量限制,也是对免费服务的滥用。

因此,如果你的文章中经常用到图片、音频、视频文件,你可能就要找图床、对象存储、视频网站来解决问题了。而这些服务又会引入非常多运维工作量。

小技巧

我有很多电脑怎么办?

把你电脑上的目录同步起来吧,群晖、OneDrive什么的都好,其他电脑上只需要把环境搭好就行了。

当然你也可以选择在每个电脑上搭好环境,把source目录放进另一个branch,每次切换之后做一整套git操作。

相信我,不管用哪一种方法,几次之后,你就不会再想用不同电脑创作了。

注意鉴别文档

不管是Hexo还是对应的主题,不同版本的变化都很大,查询文档的适合一定要注意对应的版本。

你还要小心鉴别作者自己都没搞懂的文档。

很多文档都告诉你,每次写完新文章,要用hexo clean hexo g hexo d完成部署,实际上hexo clean更多是在主题样式需改后才需要使用。启动服务器命令hexo s也根本不需要事先静态,这个命令不仅会把source里的东西立刻渲染给你看,还是实时监控source里的更新。

还有一个文档甚至建议在vps上独立部署的hexo直接用nginx反向代理hexo s的监听端口,一堆静态页面你反代它干啥?你还真打算拿Hexo当动态blog用?

总结

Hexo就像Raspberry Pi,你折腾它的时间一定超过使用的时间。

如果你只是一个想写写字的人,不打算做一个工程师,请立刻绕行,不要再多看一个Hexo的文档。