再见WordPress,拥抱Gatsby

2019年09月30日日记

用WordPress已有三年之多了,见识到了WP的功能强大和庞大生态,无数强大的插件让WP如虎添翼。不过,在使用的时候也看到了WP的短处。当然没有什么东西是没有缺点的,只是你在乎这些缺点不。

WordPress

结合自己的使用,来谈谈这个老朋友吧。

优势

1. 简单安装,开箱即用

只要有php、mysql、apache的环境(docker更容易),几步就可以搭建个WP博客了。

搭建好后,可以登录后台,即可开启写文章模式,对于不是特别东技术的人来说是很容易的。可视化的操作界面很贴心(5.0升级后界面很不错,可惜我一直停留在4.9.8,只在宣传中见到。。。),后台的设置功能也基本够用(配合主题更好食用)。

2. 生态强大

  • WP的问题在百度上基本能搜索到答案。
  • 各种款式的主题。
  • 强大的插件。
  • 稳定的团队维护。
  • 大量的使用者。
  • ......

3. PHP

我总想着在主题之上增加些自己的想法或者干脆重新写个主题,但是这些基本前提是得掌握一些PHP方面的技能,如果要是大学时代,我还是愿意去研究的。毕竟都工作这么多年了,现在学PHP是不是有点晚了?

缺点

1. 慢、笨重

php作为后端本身就慢些。

由于本人的站点一直在国外,所以网速和延迟一直是个大问题,在插件装的较多且网延迟较大时,经常出现500之类的错误。登录后丢响应导致无法跳转首页的问题也是经常性的。

WP需要配数据库,当然也是性能损失的一点,但动态博客数据库肯定得有。

CDN、静态数据缓存、数据库缓存依旧不能让WP轻盈起来。

2. 备份问题

WP下有好些个备份插件,免费版的基本功能都有。但是由于本人想异地备份,另一台虚机优势不可少的。

3. 官方不支持markdown

WP5.0了依旧不支持markdown(插件支持,但多多少少用的不自在)。

其他系统

其实很早就在物色其他系统了,不过没有一款能让我下定决定转移,因为怕又是一个坑,无限折腾。

typecho

这款国人开发的博客系统在轻盈性方面比笨重的WP表现得更好,他也支持markdown。但是没找到看得上的主题和插件,相对WP还是不足的。。。况且作者有一年多未更新了(最近有更新)。还有就是PHP写的啊,难搞。。

ghost

这个号称要干倒WP的系统,后端基于nodejs(大拇指),对于我这个像深入学学node的人来说是相当不粗的,这种情况下,写主题也不成问题。可惜的是页面是 Handlebars 模板,作为一个前端人员,怎么能还停留在这玩意上呢?好歹也得三大框架的把。

自建

那就用node搭建个博客呗?

起初好好的,后期陷入,vue和react来回切换的问题中(受个人技术栈选择问题影响),以及UI框架的来回切换,并且本人艺术方面有问题,只能欣赏好坏,不能自己设计个美的界面,后放弃。

折腾完动态博客,逐渐向慢慢兴起的静态博客靠齐。

hexo

依旧是字符串模板的原因,再加上很奇怪的文章放置规则,虽然自己也写了个简单的主题,但是没兴趣继续完善下去了。

vuePress

比较像是记录文档的,界面风格固定,不太容易修改。不过支持vue组件的展示这点很不错。

gitbook

风格更像是记录文档的,而且顶部没有menu切换页面,只能通过左侧tree来切换,或者说更像一本书而已。

Gatsby

在简单的尝试到搭建完成本系统,我来说说自己的看法。

1. 基于React

数据管理没必要用,router已经集成,不过能占到三大框架的边就用把。。。

当然,react中的一些插件基本都可以使用。

2. 高度自定义

有相当一部分主题和插件。如果你不愿意用,那么就可以用react来写一套自己喜欢的主题了。

你想用哪个UI库看你喜欢,若是想加一些奇怪的组件也可以。

Gatsby是利用 gatsby-source-filesystem 插件去读取md文件的,你可以随便瞎组合文件,甚至嵌套多层文件夹,当然文章目录位置也由你定。

若md文件渲染出的页面不满意,那就自己用react写个吧,在 src/page 下就可以写独立的页面(多页面风格不一致也没问题)。

3. 简单的后端

后端是基于Graphql的,开发起来也算是便捷吧,对于我这种不想大规模折腾后端的也是挺满意的。

4. 静态化

run build时,会将这些页面都转化成html,性能不打折扣。

5. md + github + jenkins

markdown的记录方式很舒服,配上github后,备份的问题也解决了。在套上Jenkins的自动化编译,发布也解决了,完美。

总结

对于我这种特别想折腾前端页面,但又愿意多关注后端的人来说,Gatsby是相当不错的。

就目前的使用来说,没有不满意的地方,nice。