如何在Go中渲染一个没有任何变量的模板?

huangapple go评论82阅读模式
英文:

How can I render a template in Go without any variables?

问题

我已经使用以下代码将模板文件加载到内存中:

t := template.New("master")
tpl, err := t.ParseFiles("templates/index.html")

现在我想将该模板绘制到一个字符串中,所以我的index.html文件非常空:

{{define "master"}}
Hello World
{{end}}

我刚刚开始,所以还没有任何数据。有没有办法在没有数据的情况下将Template对象转换为字符串?

英文:

I've loaded a template file into memory with the following code:

t := template.New("master")
tpl, err := t.ParseFiles("templates/index.html")

Now I want to draw that template into a string, so my index.html is pretty empty:

{{define "master"}}
Hello World
{{end}}

I'm just starting out, so I don't have any data yet. Is there a way I can convert the Template object into a string without data?

答案1

得分: 3

如果您的模板尚未使用任何变量,您可以将任何值作为数据传递给模板进行渲染。因此,要将模板渲染到标准输出,您可以使用以下示例:

tpl.Execute(os.Stdout, nil)

如果您真的想将模板渲染为字符串,您可以使用bytes.Buffer作为中间缓冲区:

var buf bytes.Buffer
tpl.Execute(&buf, nil)
str := buf.String()
英文:

If your template doesn't (yet) use any variables, you can just pass any value as data to render the template. So, to render the template to stdout, you could for example use:

tpl.Execute(os.Stdout, nil)

If you really want to render the template to a string, you can use a bytes.Buffer as an intermediary:

var buf bytes.Buffer
tpl.Execute(&buf, nil)
str := buf.String()

答案2

得分: -1

这在Go语言中是不可能的,这是设计上的限制 - 如果你没有数据,模板包就是不必要的开销。

如果你没有数据,只需使用io包读取文件,而不是使用模板。

英文:

This is impossible in Go, by design - if you don't have data, the Template package is unnecessary overhead.

If you have no data, just read the file using the io package, instead of using templates.

huangapple
  • 本文由 发表于 2013年6月9日 06:15:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/17004405.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定