猿问

定义顶级 go 模板

假设我有两个文本文件(去模板):


child.tmpl


TEXT1 

Hello {{ . }}

顶部.tmpl


TEXT2

{{ template "child.tmpl" "argument"}}

该child.tmpl模板嵌套在top.tmpl


解析它们的典型程序是:


package main


import (

    "os"

    "text/template"

)


func main() {

    t := template.Must(template.ParseFiles("child.tmpl", "top.tmpl")

    t.ExecuteTemplate(os.Stdout, "top.tmpl", nil)

}

是否有任何方法使用{{ . }}符号将要嵌入到顶级模板中的模板作为参数传递?就像是{{ template {{.}} "argument" }}


更一般地说,定义布局模板的最佳方法是什么,以便我可以像使用多个子模板的顶级模板一样使用它?


人到中年有点甜
浏览 190回答 1
1回答

小唯快跑啊

有两种公认的方法可以解决您的问题:第一个涉及编写您自己的模板包含函数,并template.FuncMap通过template.Funcs.另一种方法是{{define xxx}}在子模板中使用块。然后你可以有两个不同的文件来定义相同的模板:文件1.html: {{define body}}...{{end}}文件2.html: {{define body}}...{{end}}根据您的需要解析正确的文件,并在您的父模板中执行{{template body "argument"}}.在我看来,第一种选择更灵活。
随时随地看视频慕课网APP

相关分类

Go
我要回答