一尘不染

转到模板功能

go

当我尝试使用Funcs和时,它注意到Go模板很奇怪FuncMap。以下代码按预期工作:

buffer := bytes.NewBufferString("")

funcMap := template.FuncMap{
    "label": strings.Title,
}

t, _ := template.New("alex").Funcs(funcMap).Parse("{{label \"alex\"}}")

t.Execute(buffer, "")

return string(buffer.Bytes()) //=> "Alex"

但是,当我尝试将模板放在文件中时,它不起作用(Execute()说:)"alex" is an incomplete or empty template

t, _ := template.New("alex").Funcs(funcMap).ParseFiles("template.html")

使用template.html:

{{label \"alex\"}}

知道为什么吗?这是一个错误吗?有没有更简单的方法在模板中使用方法/功能?


阅读 218

收藏
2020-07-02

共1个答案

一尘不染

ParseFiles可能会使用更好的文档。一个模板对象可以包含多个模板,每个模板都有一个名称。如果查看ParseFiles的实现,则会看到它使用 文件名
作为模板对象内部的模板名称。因此,将文件的名称与模板对象的名称相同(可能通常不实用),或者使用ExecuteTemplate而不是Execute。

2020-07-02