猿问

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

例如,我有


package main


import "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加载多个文件?最有效的方法是什么?


子衿沉夜
浏览 293回答 2
2回答

素胚勾勒不出你

仅第一个文件用作主模板。其他模板文件需要从第一个文件中包含进来,如下所示:Title is {{.Title}} {{template "footer.html" .}}之后的点将"footer.html"数据从中Execute传递到页脚模板-传递的值.将包含在包含的模板中。

慕田峪4524236

user634175的方法存在一些缺陷:{{template "footer.html" .}}第一个模板中的必须进行硬编码,这使得很难将footer.html更改为另一个页脚。这里有一点改进。header.html:Title is {{.Title}} {{template "footer" .}}footer.html:{{define "footer"}}Body is {{.Body}}{{end}}这样,footer.html可以更改为定义“ footer”的任何文件,以创建不同的页面
随时随地看视频慕课网APP

相关分类

Go
我要回答