- Published on
Hugo vs Zola
- Authors
- Name
- ttyS3
对比项 | Hugo | Zola |
---|---|---|
实现语言 | Golang | Rust |
主题数量 | 丰富 | 较少 |
模板引擎 | Go Template | Tera |
CSS 支持 | SASS / SCSS, PostCSS | SASS / SCSS |
Page Bundle 支持 | Yes | Yes |
Front Matter 支持 | TOML/YAML/JSON/ORG | TOML/YAML |
子目录支持 | 自动 | 需要手动给每个子目录添加 _index.md |
生成 URL 配置 | 支持 | 不支持 |
Zola uses the
Tera
template engine, which is very similar toJinja2
, Liquid and Twig.
关于 Front Matter, 刚开始 Zola 是极力不想添加 YAML 支持的, 后面添加了, 但是并没有在文档里面说明 (作者极力不提倡使用).
事实上我觉得写 markdown 用 TOML Front Matter 才是反人类.
Hugo 通通 pipeline 可以支持很多东西: https://gohugo.io/hugo-pipes/
而 Zola 则局限于 SASS 的 Rust 绑定, 今天无法支持 PostCSS : https://zola.discourse.group/t/add-postcss-support/556
子目录支持方面, Zola 也是很糟心.
需要给每个子目录添加 _index.md
文件, 否则不会索引到 pages.
+++
paginate_by = 4
sort_by = "date"
transparent = true
+++
注意这里的 transparent = true
一定要添加. 要不然你在模板里面无法看到子目录的内容. paginate_by
也一定要添加, 要不然不会有 paginator
这是一种很奇怪的设定, Zola 和 Hugo 这方面是反的. Hugo 是默认支持子目录, Zola 则是默认不支持. 维护众多子目录下的 _index.md
文件是很糟糕的, 从这方面来说, Hugo 更实用.
Zola 的作者似乎比较武断, 表示无意支持 URL 生成规则: https://github.com/getzola/zola/issues/635
而 Hugo 则支持灵活地模板规则. 比如 配置为 /post/:filename/
则 /posts/sub1/sub2/my-post-filename.md
可以生成 /post/my-post-filename/index.html
而 Zola 则只能按照目录结构生成 /posts/sub1/sub2/my-post-filename.html
目前看来, Zola 也已经不再是新项目了, 但是作者对于一些东西的接纳程度, 仍然是制约其发展的主要因素. 社区的力量应该还是比较强大的, 但是作者的接纳程度, 可能是一个问题.
而 Hugo 可能在朝着另一个极端在发展, 不断地在添加新功能.
综合起来, 除非你对 Zola 有特别偏爱, 否则不要使用 Zola. 大部分情况下, Hugo 能很好的满足需求, 而 Zola 则不一定.
Refs
https://jamstack.org/generators/
https://gohugo.io/content-management/front-matter/
https://www.getzola.org/documentation/templates/pagination/
https://www.getzola.org/documentation/templates/overview/