【发布时间】:2014-11-26 11:08:13
【问题描述】:
在使用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
这可能吗?如果是这样,我做错了什么?
【问题讨论】:
-
看起来你应该可以从the docs 执行
template.New(...).Delims(...).ParseFiles(...)。这是索引中的第二个 ParseFiles,而不是第一个。 -
确实!尽管我已经为此工作了很长时间,但在发布问题后不久我就发现了这一点。我很难理解这个包裹 :) 感谢您的帮助!
-
对于未来的读者,我缺少的另一个细节是我需要始终使用 template.New("base.tmpl") 将任何页面的模板命名为“base.tmpl”。我猜那是因为它是在解析的模板集中使用的根模板的名称。