hkt1998

hkt1998

从WordPress转到Halo

2020-12-08

之前在WordPress上写博客时,我使用了一个名为Adams的极简主题和大量实用的插件,一切都非常美好。直到有一天,我觉得这个主题缺少了点赞功能,于是尝试安装了点赞插件,却发现无法使用,而且样式极其丑陋。因此,我决定自己动手开发主题。

我一直都有从零开始开发一个博客主题的想法,而开发哪个博客平台的主题则成了我首要考虑的问题。WordPress是基于PHP开发的,所以想要开发WordPress主题,就必须先学习PHP。我早就听说过“PHP是世界上最好的语言”,于是二话不说便打开了菜鸟教程开始学习PHP

然而,PHP的坑实在是太多了,它被称为“最好的语言”并非没有道理。使用PHP编写主题时,需要用<?php ?>将代码包裹起来,再嵌入到html中。这导致整体代码看起来非常混乱,对于有强迫症的人来说,简直就是一场灾难。

我特意上网查找了PHP的代码规范,但几乎没有找到任何帮助。我甚至发现,随意的代码风格是很多人喜欢PHP的理由。最过分的是,PHP中的关键词也没有一个统一的命名风格,有的大写,有的小写,有的简写,有的全拼。据说在早期版本的PHP中,作者通过对变量名称进行哈希计算来实现某些功能,因此故意让变量名尽可能不一致,从而使哈希值更加分散。

我毅然决然地抛弃了WordPress,在考虑是否要回到静态博客时,我发现了Halo这个优秀的平台。

它基于Java开发,支持markdown格式,附件可以直接上传到阿里云OSS,并且默认使用h2数据库!

而我最关心的主题开发方面,它使用了一个名为Freemarker的模板引擎。虽然我还不太清楚这个引擎的具体细节,但总比直接用PHP编写要好得多。

Halo相当于一个Java应用程序,只需将其作为服务运行即可。由于h2数据库是嵌入式的,因此无需另外启动数据库服务。整个部署过程相对简单。

我也将服务器从香港搬回了北京。因为不再使用WordPress了,那些需要连接外网的升级服务也不再需要。将服务器搬回大陆还能节省一笔费用。同时,我还启用了尘封已久的OSS服务,以后图片都将存储在上面。再配合CDN服务,不仅能提升访问速度,还能减轻主站服务器的负担。

虽然Halo是一个小众的博客框架,但其社区还算活跃。我在GitHub上提交的issue很快就得到了反馈。开发团队目前正在改进编辑器。个人认为Halo还是很有潜力的。

这并不是说Halo完全超越了WordPress,只能说它们各有优劣。而我个人更喜欢Halo。最后,我放上一张WordPressHalo的对比图,供大家根据自己的需求进行选择。

功能

WordPress

Halo

插件扩展

有海量插件,后台插件市场一键安装

没有插件的概念,需要自己开发功能

Markdown

有插件能让WordPress识别markdown,但文章存储形式还是html

支持,解析器为flexmark-java

LaTeX数学公式

有插件

原生支持

文章编辑器

功能比较丰富,有很多小工具可以配合插件使用,自带可插入文章的小相册功能

markdown方式编辑,样式要么依靠主题渲染,要么自己在markdown里写css。目前还没有很好的方法插入相册,只能手写html

图片上传

只能上传到本地,可镜像到OSS,再通过插件替换图片链接为CDN

原生支持本地上传、OSS上传

数据库

MySQL

默认h2,也支持MySQL

SEO配置

有插件,可以做到很复杂的配置

原生支持简单的配置

本地数据统计

有插件,可记录很详细的访客信息

自带记录访问量,没有其它数据

第三方统计

有插件

支持

友链

可通过插件实现,但不怎么好用,还得看主题

支持

性能

够你用了

个人博客完全足够

稳定性

我是用期间没有出现过问题

偶尔服务会重启,可能是因为分配的内存太小,但设置了自动重启服务,所以不需要操作,过一会就好了

配置要求

因为需要开启MySQL服务,所以配置要求比Halo高一丢丢

1核半G的配置,配合OSS+CDN,博客前期完全足够了