假设我有两个文本文件(go 模板):
child.tmpl
TEXT1
Hello {{ . }}
top.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"}}
- 更一般地说,定义布局模板的最佳方法是什么,以便我可以将其像顶级模板一样用于多个子模板?
最佳答案
有两种公认的方法可以解决您的问题:
第一个涉及编写您自己的模板包含函数并将其注册为 template.FuncMap
通过 template.Funcs
使用您的模板.
另一种方法是在您的子模板中使用{{define xxx}}
block 。然后您可以有两个定义相同模板的不同文件:
- file1.html:
{{定义正文}}...{{end}}
- file2.html:
{{定义正文}}...{{end}}
根据您的需要解析正确的文件,并在您的父模板中执行{{template body "argument"}}
。
我认为第一种选择更灵活。
关于go - 定义顶级 Go 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946533/