Golang Go语言中有没有什么好用的 HTML 模板引擎

发布于 1周前 作者 itying888 来自 Go语言

Go 自己的 html/template 有个问题

完整项目中使用多个区块+layout 会导致永远只有有一个生效,或许是我使用姿势有问题

举例说比如

<!-- layout.html -->
{{block "in"}{{end}}
<!-- a.html -->
{{template "layout.html"}}
{{define "in"}}a{{end}}
<!-- b.html -->
{{template "layout.html"}}
{{define "in"}}b{{end}}
package main

//go:embed *.html var fs embee.FS

func main() { t := &template.New("").ParseFS(fs, “*.html”) // 无论是 a.html 或者是 b.html 永远都是相同的内容 // 因为所谓的 name 也算 define 内容一次被定义后会被后边的覆盖 t.ExecuteTemplate(os.Stdout, “a.html”, nil) }

正确的方法应该是我这次需要显示 a.html ,就需要 template.new("").parsefs(fs,"layout.html","a.html")需要 b.html 的时候,再重新 parsefs(fs,"layout.html","b.html")

感觉就很……

要一个项目里几十上百个文件光是这个定义不得写死- -正确的使用姿势是什么呢?

看到 go-pongo2 自己实现了一套 Django 的语法 {% extends "xx" %} 但是好像几年没更新了


Golang Go语言中有没有什么好用的 HTML 模板引擎

更多关于Golang Go语言中有没有什么好用的 HTML 模板引擎的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

10 回复

htmx 挺火的

更多关于Golang Go语言中有没有什么好用的 HTML 模板引擎的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我是用的 一个三方封装的一个: https://github.com/foolin/gin-template/tree/master
使用方式:
- 模板配置: https://github.com/go-eagle/eagle/blob/master/internal/routers/web.go
- 模板示例: https://github.com/go-eagle/eagle/tree/master/internal/templates

用起来感觉还好,没遇到过什么问题。

看着是预先定义一个 master 作为 layout 。然后动态 parse 并且 parse 之前先 parse master 。只能是这种方法了吗。

非常感谢, 这个项目依赖的组件正是我喜欢的, bulma

目前是这种,也是比较常见的一种方式。其他暂时没发现。

和 gintemplate 属于一类

可以用 https://github.com/kalafut/entemplate 这个扩展了 extends 语法,就是在 a.html 指定一个 layout.html ,这样执行的时候就直接 Exec a.html 就是了,并且这个库还可以设置是否自动重载

在Go语言中,确实存在多个好用的HTML模板引擎,其中Ace是一款值得推荐的轻量级HTML模板引擎。

Ace专为Go语言设计,深受Slim和Jade等著名模板引擎的启发,并充分利用了Go标准库html/template的强大功能。Ace模板引擎的特点包括:

  1. 简洁的语法:提供了一种更加直观和简洁的方式来编写HTML模板,使模板文件看起来更干净、轻便,易于阅读与维护。
  2. 无缝集成Go模板包:完全兼容html/template,允许嵌入html/template包的所有动作,支持模板的嵌套定义以及参数传递。
  3. 高效的缓存机制:提供模板解析结果的缓存功能,节省后续重复解析的时间,提高应用性能。
  4. 二进制模板加载:能够直接从内存中的二进制数据加载模板,适合将应用编译成单一可执行文件的场景。

此外,Ace还广泛适用于各种Go Web框架,如Martini,且兼容性良好。无论是构建简单网站,还是复杂的Web应用程序,Ace都能帮助Go Web开发者编写出结构清晰、易于维护的模板代码。

总的来说,Ace是一款高效、易用且具备强大扩展性的HTML模板引擎,是Go Web开发者的理想选择。如需更多信息,可访问Ace的项目地址进行查阅。

回到顶部