什么是静态网站生成工具?

好处:

  1. 方便本地备份。博客工具如 WordPress 备份麻烦,并且检查备份成功与否也不直观,比如备份数据库的话,还需要定期导入才能知道备份是否成功。而静态网站生成器,对文件的备份非常直观,你只需要在另外一台电脑上把文件检出,在本地跑起来服务器,马上就能知道是否备份成功;对于文件,则可以简单地看一下是否有全部提交到 Git 或是 SVN。对于个人写作者来说,静态网站生成器实在是太经济实惠了。

  2. 方便在不同的静态网页工具里迁移。只需要把文件文件和图片等拷贝到新的静态网站工具下即可,同样也可以保证原来的 URL 不变。

  3. 方便部署,生成静态网页后,可以非常低成本地部署到各个服务商,甚至对于小网站来说,完全可以用 Netlify 等的服务而不超出流量。

缺点:

  1. 静态网站更适合于创建只有少量网页、内容变化不频繁的小网站。

  2. 与读者的互动交流不方便,评论以及留言等有一些解决办法,但是都比较 geek,需要有一定的动手能力。

  3. 配置较复杂,一般来说,比较适合于程序员或是工程师们使用。

技术介绍

这里介绍一些我体验过的静态网站生成工具,不全面进行对比,只从感性上简单说一下我自已的体会。

Quarto

Quarto 是我最满意的静态网站生成工具,不过出于历史原因,我使用 Hugo 更多一些。

Quarto 有一个特性是其它静态网站所没有:默认就能使用 BibTeX 管理参考文献,在写长篇的学术类或是技术资料,非常方便;并且可以一键导出为 pdf 或是 docx。而对于其它的静态网站生成工具来说,都需要能过插件来支持 BibTeX 参考文献引用功能。

如果 Quarto 用熟悉了,还能非常方便地来写书,技能与配置是相通的。

如果要说它的缺点,那就是文件后缀都是 .qmd 而不是大家默认的 .md,在使用一些编辑器的时候会有一些不方便。

Quarto 的缺点也很明显,它在后端是依赖 pandoc 来进行文献索引以及文档转换处理的,所以在服务器部署上,要求会更麻烦一些。因为 Quarto 支持的特性非常多,尤其是一些即时符号、数据、图表的显示,所以用CI来做集成与自动化发布要求比较高,尤其是一些静态网站托管服务比如 Netlify 默认就不支持 Quarto,必须本地推送发布(或是通过 Github 来发布,配置也是略显繁琐)。所以 Quarto 的整个使用门槛,较后续要提到的 Hugo 之类的要高一些。

Hugo

使用 go 语言写成,运行速度快,部署简单,在本地的话直接用安装包即可。

Hugo 对于技术或是科研人员来说,有一个很致命的缺点,就是没有办法很方便地直接使用 BibTeX 之类的参考文献管理,毕竟在互联网上写作的人,需要用到严格的参考文献管理的人群还是太小众。

我个人喜欢 Hugo 的简洁、轻快与速度,因为一开始用了这个静态网站工具,期间虽然也尝试过其它的静态网站工具,但是最后还是选择坚持使用 Hugo。

我的写作习惯,一般是在 Obsidian 里打草稿,随意引用参考文献,最后使用 pandoc 把 markdown 里的 citation 处理成标准的 markdown 样式,然后再把生成的 markdown 放到 Hugo 站点上去,这样有两点好处:

  1. 慎重对待内容,毕竟是经过反复修改后的内容才用来发布。
  2. 发布后的内容,尽量少修改。

markdown 转 markdown 并处理 citation 的命令如下:

1
pandoc --citeproc --bibliography reference.bib --csl ieee.csl -t markdown_strict -o result.md NLP.md

Hugo 因为是成熟的静态网站建站工具,所以天然对 Disqus 和 Google Analystics 非常友好,自带这些插件可以快速安装;而 Quarto 则更专注于技术写作本身,在静态站点建立的便捷程度、模板、插件工具的丰富程度上,和 Hugo 相比就占下风。

Jekyll

老牌静态网站生成工具,Github 的官方工具,使用 Ruby 写成。

PS:JekyII 的网站要转为 Hugo,如果在 JekyII 里有设置 permalink 的话,只需要把 post 里的 permalink: 改为 url: 即可保持域名链接不变。