在使用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) }
这导致相同的结果。
如果这是相关的,我需要在网站的特定页面中嵌入一个小型 Angular 应用程序。
另外,我有一个具有通用HTML结构的基本模板,该模板与带有ParseFiles()的页面特定模板结合使用,从而导致了这种布局:
/templates/base.tmpl
/templates/homepage/inner.tmpl
/templates/otherpage/inner.tmpl
这有可能吗?如果是这样,我在做什么错?
最佳答案
创建一个虚拟模板,设置分隔符,然后解析文件:
tmpl, err := template.New("").Delims("[[", "]]").ParseFiles("base.tmpl", "homepage/inner.tmpl")
API的这一方面很古怪,也不是很明显。在早期,模板包具有其他Set类型时,API更有意义