各种工具、平台、格式泛滥成灾,每个打算动手写博客的人都要在上面浪费不少时间。是否要自己搭建?该选什么主题?要买什么域名?鉴于我已经在上面浪费了不少时间,就简单总结一下吧。

明确需求

对我而言,博客更多的是记录的作用,是不是有足够多的流量反倒是次要的。因此,一些博客平台提供的 SEO 就无所谓了,自定义域名也是可有可无,简单省心才是关键。

格式方面,目前看来最方便的还是 Markdown,而且需要支持 LaTeX,毕竟会用到不少公式。单是这一条,多数平台就不行了。

主题方面需要简洁,有基本的功能即可,那些炫酷的特效就不必了,太旧的那种也不适合现在的宽屏。最后,还是觉得自己定制一个比较或者修改一个现成的主题比较合适。

Jekyll

作为 GitHub Pages 官方支持的工具,Jekyll 也算是很出名了。

Jekyll 是 Ruby 开发的,虽然 Ruby 用户不算多,但是基本上不需要了解 Ruby 的语言细节,相关工具也很易用,如果想自己定制主题的话,我感觉官方的文档还不够好,不过也基本可以用了。

这里要注意的是,托管到 GitHub Pages 的话,用的是 GitHub 的 pages-gem 而不是原生的 ruby gem ,主要问题在于只支持一部分基本的 plugins,详细的列表可以查看源代码 。我发现连基本的 jekyll-archives 这种 Jekyll 官方的 plugins 都不支持,详细的讨论可以看 PR 。如果想随便用 plugins 的话,就只能自己 build 好之后再 deploy 了,可以用 Travis CI 来自动化这个过程。我写了一个 gist 介绍细节。

另外,如果自己 build 的话,要注意 baseurl ,如果不是自己的 name.github.io repo 的话需要指定。用到相对地址的地方都需要注意用 {{ url | relative_url }}

我自己目前用的就是这个了,基于 minima 制作了一个简洁的主题 jekyll-theme-ink ,基本上满足需求。

Hexo

Hexo 是 Node.js 开发的,npm 的使用体验你懂的。算是非常流行的一个工具了,拥有非常多的主题,不得不说 NexT 确实好看,从上万的 star 也能看出来,当然也有人移植到其他工具上了。

Hexo 有专门的命令把本地 build 的结果推到 GitHub 上,这一点也算是非常方便了。事实上 Hexo 默认的功能很全,连 i18n 之类的都有,基本上能满足常见需求了。

要说有什么缺点的话,我之前用的时候觉得 npm 真难用……真的不适合不了解 Javascript 的人,宣传的 build fast 也无从谈起,不知道现在有没有好一点。

Hugo

Hugo 是 Go 开发的,现在也有上百个主题了,也支持从 Jekyll import,宣传的优势是世界上最快的建站框架,如果是说 build 这个过程的话,感觉一般也没什么影响吧,毕竟都是静态网站,build 速度基本不会差太多。

没有怎么用过这个工具,感觉上跟就是 Go 语言版的 Hexo 吧。对 Go 感兴趣的可以看看这个。

VuePress

VuePress 是 Vue 开发的一个项目文档工具,并不是专门用于写 Blog,所以各方面也都是适应项目文档的,比如默认只支持生成一个包含某个文件夹下各页面标题的 sidebar ,而不是一个 blog title list。想要的话还需要自己搞插件。

另外,这个工具还非常新,基本上可以认为只有官方默认的一个主题,虽然也算是简洁漂亮了。我之前试用的时候,想用插件来支持 LaTeX,结果发现 VuePress 用的 markdown-it 还需要别的插件来支持,而这个插件缺少人维护,经常 MathJax 或者 KaTeX 一更新就不能用了,非常难受。

所以,建议想省事的人还是别碰这个了,对 Vue 感兴趣的可以看看。

LaTeX 支持

这一点对需要用到公式的人非常重要了,目前常用的有 MathJaxKaTeX 两个插件。前者直接在页面上加载即可将对应的公式转换,而后者提供了一个接口,需要自己调用来 render,或者看有没有支持的插件。

Finally

当然还有很多其他的东西,比如 WordPress,不过我自己大概找到了目前最合适的工具了,GitHub Pages 的免费托管也足够了,反正主要是自己做记录用的,也不指望多火。