为了账号安全,请及时绑定邮箱和手机立即绑定

使用Golang中的template.ParseFiles的多个文件

使用Golang中的template.ParseFiles的多个文件

Go
子衿沉夜 2021-05-05 21:49:03
例如,我有package mainimport "html/template"import "net/http"func handler(w http.ResponseWriter, r *http.Request) {    t, _ := template.ParseFiles("header.html", "footer.html")    t.Execute(w, map[string] string {"Title": "My title", "Body": "Hi this is my body"})}func main() {    http.HandleFunc("/", handler)    http.ListenAndServe(":8080", nil)}在header.html中:Title is {{.Title}}在footer.html中:Body is {{.Body}}转到时http://localhost:8080/,我只会看到“标题是我的标题”,而看不到第二个文件footer.html。如何使用template.ParseFiles加载多个文件?最有效的方法是什么?
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

仅第一个文件用作主模板。其他模板文件需要从第一个文件中包含进来,如下所示:

Title is {{.Title}}
{{template "footer.html" .}}

之后的点将"footer.html"数据从中Execute传递到页脚模板-传递的值.将包含在包含的模板中。


查看完整回答
反对 回复 2021-05-17
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

user634175的方法存在一些缺陷:{{template "footer.html" .}}第一个模板中的必须进行硬编码,这使得很难将footer.html更改为另一个页脚。

这里有一点改进。

header.html:

Title is {{.Title}}
{{template "footer" .}}

footer.html:

{{define "footer"}}Body is {{.Body}}{{end}}

这样,footer.html可以更改为定义“ footer”的任何文件,以创建不同的页面


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信