Golang html / templates:使用自定义Delims的ParseFiles

时间:2014-11-24 22:07:32

标签: angularjs templates go

使用带分隔符的模板在使用template.New("...").Delims("[[", "]]").Parse()时工作正常 但是,我无法弄清楚如何使用template.ParseFiles()

获得相同的结果
tmpl, err := template.ParseFiles("base.tmpl", "homepage/inner.tmpl")
if err != nil { panic(err) }
tmpl.Delims("[[", "]]")
p := new(Page) 
err = tmpl.Execute(os.Stdout, p)
if err != nil { panic(err) }

我没有错误,但分隔符没有改变。

tmpl, err := template.ParseFiles("base.tmpl", "homepage/inner.tmpl")
t := tmpl.Lookup("base.tmpl").Delims("[[", "]]")
p := new(Page) 
err = t.Execute(os.Stdout, p)
if err != nil { panic(err) }

这导致相同的结果。

如果这是相关的,我需要在我网站的特定页面中嵌入一个小角度应用程序。

此外,我有一个基本模板,其中包含一个常见的HTML结构,我将其与一个特定于页面的模板与ParseFiles()结合在一起,从而导致了这种布局:

/templates/base.tmpl
/templates/homepage/inner.tmpl
/templates/otherpage/inner.tmpl

这有可能吗?如果是这样,我做错了什么?

1 个答案:

答案 0 :(得分:6)

创建一个虚拟模板,设置分隔符,然后解析文件:

 tmpl, err := template.New("").Delims("[[", "]]").ParseFiles("base.tmpl", "homepage/inner.tmpl")

API的这个方面很古怪,并不是很明显。在模板包具有额外的Set类型

的早期,API更有意义