力爭做最好的go模板引擎

Lime發表於2017-01-17

一直覺得 go 沒有一個好用的模板引擎,渲染 html 的時候特別痛苦,總有一種有力氣卻使不出來的感覺。

模板引擎一般有兩種實現方式,一種是解析 html 語法樹,然後根據一定的規則動態的拼接,另外一種是把模板預先生成程式碼,渲染模板時呼叫相關的函式即可。

Go 內建的 template 包使用的是第一種方式,不過很多開源專案使用的是第二種方式,比如 quicktemplate 、 gorazor 等。不過這兩個可能由於設計的問題,都沒有實現模板繼承和模板 include ,而且有的語法個人覺得不是太優雅。

所以我想要一個 go 模板,它具備以下特性:

原生的 golang 語法

  • 支援模板植入程式碼
  • 支援模板繼承和 include
  • 高效能
  • 語法簡單、優雅
  • 自動編譯

基於以上,實現了 hero 模板引擎,用過 nodejs EJS 模板引擎的童鞋應該很容易上手。 hero 目前已經在 http://bthub.io 線上使用。

Github: https://github.com/shiyanhui/hero

Gophers ,歡迎 issues 和 pr ,讓我們一起共同打造 golang 最好的模板引擎!

相關文章