如果我有这样的HTML文件,该如何在Golang中进行操作:
<html> <head lang="en"> </head> <body> <header>{{.Header}}</header> <div class="panel panel-default"> </div> </body> </html>
我想将一部分代码嵌入到其他文件的标头标签中,如下所示:
<div id="logo"></div><div id="motto"></div>
我的尝试:
header, _ := template.ParseFiles("header.html") c := Content{Header: ""} header.Execute(c.Header, nil) index := template.Must(template.ParseFiles("index.html")) index.Execute(w, c)
如果使用template.ParseFiles()或来解析所有模板文件template.ParseGlob(),则模板可以相互引用,它们可以互相包含。
template.ParseFiles()
template.ParseGlob()
更改您的内容index.html以包括header.html以下内容:
index.html
header.html
<html> <head lang="en"> </head> <body> <header>{{template "header.html"}}</header> <div class="panel panel-default"> </div> </body> </html>
然后是完整的程序(从当前目录解析文件,执行"index.html"并将结果写入标准输出):
"index.html"
t, err := template.ParseFiles("index.html", "header.html") if err != nil { panic(err) } err = t.ExecuteTemplate(os.Stdout, "index.html", nil) if err != nil { panic(err) }
有了template.ParseGlob()它可能看起来像这样:
t, err := template.ParseGlob("*.html") // ...and the rest is the same...
输出(打印在控制台上):
<html> <head lang="en"> </head> <body> <header><div id="logo"></div><div id="motto"></div></header> <div class="panel panel-default"> </div> </body> </html>