为了解析文件,我为template.ParseFiles设置了一个变量,而我目前必须手动设置每个文件。
两件事情:
我将如何遍历主文件夹和多个子文件夹并将其自动添加到ParseFiles,这样我就不必单独手动添加每个文件了?
如何在子文件夹中调用具有相同名称的文件,因为如果我在ParseFiles中添加相同名称的文件,当前在运行时会出现错误。
var templates = template.Must(template.ParseFiles(
"index.html", // main file
"subfolder/index.html" // subfolder with same filename errors on runtime
"includes/header.html", "includes/footer.html",
))
func main() {
// Walk and ParseFiles
filepath.Walk("files", func(path string, info os.FileInfo, err error) {
if !info.IsDir() {
// Add path to ParseFiles
}
return
})
http.HandleFunc("/", home)
http.ListenAndServe(":8080", nil)
}
func home(w http.ResponseWriter, r *http.Request) {
render(w, "index.html")
}
func render(w http.ResponseWriter, tmpl string) {
err := templates.ExecuteTemplate(w, tmpl, nil)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
相关分类