继续上一篇聊聊个人博客这件事(一)所说的故事,来聊聊博客的框架。目前市面上主流的免费开源博客框架非常多,但是好用且插件丰富的其实并不多。个人能力和篇幅的限制,今天主要还是聊聊三个我自己折腾过的框架:
本篇不会去花太多篇幅描述这些框架的具体技术细节,或者部署方式。我更愿意从用户的使用体验和个人对这几个框架理解上来谈谈一些想法。毫无疑问这三个框架都是非常优秀的、也远非一个人能简单撸轮子可以超越的,所以很多时候所谓的吐槽更多是来自于个人需求和框架功能的不匹配,而不代表这个框架中真的存在某种无法解决的技术问题。
不过在正式开始前,突然想起来了许多年前在知乎看到过的一句话:
你们这些孩子哪里是真为了写博客。你们只是想体会换新工具的愉快感觉,顺便体会一下否定掉旧工具,觉得自己特别的小欣喜。
其实想到这句话自己脸上也会有点火辣辣的疼,就好似在扇自己的巴掌。确实从多年观察来看,摧毁一个博客最好的方法其实就是在不同博客框架之间反复横跳和折腾。框架换了好几个,文章没写几篇的人,才是博客大军中的九成九。所幸的是自己这几年多数的博客倒是在Notion
和Evernote
里基本都归档了,未来会逐步校正后恢复到这个博客里。
所以,博客框架永远只是一个个人的选择,内容和坚持才是博客这种自我娱乐活动的根基。 阮一峰那样基本没有在css style
和花里胡哨的修饰上做过度投入的博客,之所以能成功,唯靠那十几年如一日的高频更新和高质量(此处不代表他观点全对,毕竟给阮一峰挑错误都已经是一个热门的GitHub话题了)。但阮老师毋庸置疑是互联网博客作者里让人非常尊敬的一位大神。
接下来言归正传,聊聊三个框架。
¶WordPress
WordPress
想了想还是决定放到最开始来谈。因为这是三个框架中最特别的一个,与其说WordPress
是一种博客框架或者网站框架,倒不如说更像是一种开源的网站综合方案产品。WordPress在其十多年的发展历程中,积累了海量的使用者、开发贡献者和生态圈。这导致其无论是插件的丰度的还是技术相关的Q&A的覆盖度都远远超过了所有其他框架。
其次,WordPress
作为一个由PHP开发的框架,很多时候其本身的能力上限或者扩展上限,并不是由框架自己决定的。理论上只要你对PHP的开发有足够丰富的经验,你可以在WordPress
中做几乎任何事情。正因如此,有相当一部分知名的网站其实是基于WP框架开发的,只是出于一些License的限制对WP进行了重写。例如 Canada.com 和 NYTimes等。
但是反过来说,如果使用者本身对于PHP的二次开发并不甚熟悉的话,则对于WP框架的使用可能也只能局限于在/wp-admin
下寻找合适的主题与插件、并进行配置了。我在第一次自建微博的时候其实就采用了这样的做法,快速在自己海外的云服务器上起了一套WP的容器,然后花了一段时间玩各种插件。但是随着主题和插件的熵增,以及PHP本身的一些性能问题(当然在PHP7之后性能基本得到了极大改善),导致在折腾过程中产生了比较大量的报错,在回滚的过程中浪费了不少时间。毕竟有相当多的主题和插件的安装是不可自动回滚的。这导致你需要手动为你的WordPress Home Directory
做硬备份。
而最终导致我抛弃WP的根因其实和WP本身的一些问题并无太大关联,纯粹是跟风式的打算尝试一下Medium
导致。所以如果有朋友想搭建自己的博客的话,我依然会毫不犹豫的推荐Ta试试看WP。
¶Typecho
Typecho
之所以有不少拥趸,得益于它在非常早的时候(大约是零几年)就已经尝试把纯粹写作
这样的概念引入到了博客之中。要知道那个年代还是一个拟物图标和UI盛行的年代,每个人都正在非常狂热的往自己的博客和QQ空间添加大量的网页元素,生怕那个低分辨率的窗口里有丝毫的留白没有被充分利用。因此在那个时候纯粹写作就像是一个异类,从而很快吸引了相当大一批的受众。
同时,和WordPress
一样,Typecho
的开发语言也是PHP,而上一个十年之交正是“PHP是世界上最好的语言”这个说法大盛的时代,潮水一般的年轻互联网从业者结合着对PHP的熟练度,让Typecho
的占有率快速上升。从我自己的搭建体验来说,如果你真的很确定自己只是要一个专注写作的博客,那么Typecho
绝对能非常完美地胜任。
对于非计算机的从业者来说,Typecho
的部署可能是三个框架里最简单的。只需要解压后前往install.php
按照提示进行操作,以及拥有一些最低限度的关系型数据库连接知识,就可以在短短几分钟里完成全套部署,并且立刻开始自己的写作。还有什么比这个更让人爽的呢。
当然,Typecho
该喷的地方依然一堆,比如说乌龟一般的迭代频率,从2017年开始甚至时隔4年才提交了新的小版本更新。比如说糟糕的插件丰度————不过换句话说,既然专注写作,那干嘛要搞花里胡哨的插件呢。
¶Hexo
Hexo
也是本博客使用的框架,是我在遍尝了这三个框架后,最后选定的一方案。我自己的理由很简单,首先我希望自己的博客能够更加关注写作,而非花里胡哨的功能和视觉表现,例如Live3D、音乐播放之类的;其次我还是希望能够有较为丰富、二次开发较为容易的插件库,因为少玩花活不代表不玩花活;最后作为运维从业者,我觉得JavaScript
会是也必须是往全栈发展的过程要拿下的技能点,而Hexo
刚好是一个Nodejs项目。
所以并不是Hexo
超越了其他框架而让我选择它,而是我的当前的需求,和这个框架最契合。
另外,稍微扯远点说,对于博客的作者来说,发布博客其实是一件非常高频的事情。因为这里不仅仅包括了新文章的发布,也包括了对已存在的文章的错误修正。那么对于一个常年在命令行和编辑器里工作的人来说,在Web Console
里完成文章的书写和发布,其实挺反人类的。那么我势必需要追求一个满足以下两点的框架:
- 可以通过
GitHub Action || GitLab CICD
进行自动化发布 - 最好页面资源是纯静态资源,这样可以在使用对象存储来作为页面的发布源。
很巧的是这两个需求Hexo
也满足了,而我现在也正舒服地在VS Code
的界面里书写这篇文章,而写完后也将通过./COMMIT_MASTER.sh
进行一键rebase
和push
,而后续的所有同步、测试、静态资源生成、发布的事情,完全由GitHub和脚本来帮我。而我对博客所做的一切变更,都会诚实而没有遗漏地记录在我的Github中,这一切正是我想要的。
感谢阅读