有没有什么好用的 HTML 模板引擎 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dzdh
V2EX    Go 编程语言

有没有什么好用的 HTML 模板引擎

  •  
  •   dzdh 2024-06-20 09:51:35 +08:00 2493 次点击
    这是一个创建于 493 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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" %} 但是好像几年没更新了

    9 条回复    2024-07-01 00:14:38 +08:00
    wateryessence
        1
    wateryessence  
       2024-06-20 10:04:00 +08:00 via iPhone
    htmx 挺火的
    qloog
        2
    qloog  
       2024-06-20 10:17:33 +08:00
    我是用的 一个三方封装的一个: 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

    用起来感觉还好,没遇到过什么问题。
    Ayanokouji
        3
    Ayanokouji  
       2024-06-20 10:19:16 +08:00   1
    参考这个项目,用 htmx
    https://github.com/mikestefanello/pagoda
    dzdh
        4
    dzdh  
    OP
       2024-06-20 10:50:20 +08:00
    @qloog 看着是预先定义一个 master 作为 layout 。然后动态 parse 并且 parse 之前先 parse master 。只能是这种方法了吗。
    maladaxia
        5
    maladaxia  
       2024-06-20 13:25:29 +08:00
    @Ayanokouji 非常感谢, 这个项目依赖的组件正是我喜欢的, bulma
    qloog
        6
    qloog  
       2024-06-20 14:04:53 +08:00
    @dzdh 目前是这种,也是比较常见的一种方式。其他暂时没发现。
    cokyhe
        7
    cokyhe  
       2024-06-20 14:47:51 +08:00
    dzdh
        8
    dzdh  
    OP
       2024-06-21 09:04:45 +08:00
    @cokyhe 和 gintemplate 属于一类
    Kisesy
        9
    Kisesy  
       2024-07-01 00:14:38 +08:00   1
    可以用 https://github.com/kalafut/entemplate 这个扩展了 extends 语法,就是在 a.html 指定一个 layout.html ,这样执行的时候就直接 Exec a.html 就是了,并且这个库还可以设置是否自动重载
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2411 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:47 PVG 12:47 LAX 21:47 JFK 00:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86