发布时间:2024-11-21 21:05:55
Golang内置的html/template
包提供了一套基于树状结构的模板解析器,该解析器允许你通过特定的路径加载模板文件。这样,当你需要渲染一个模板文件时,只需指定该文件相对于模板路径的路径即可。
template.New
函数来设置模板路径。下面是一个简单的例子:
func main() {
// 设置模板路径
t, err := template.New("mytemplate").ParseFiles("/my/template/path/template.html")
if err != nil {
log.Fatal(err)
}
// 渲染模板
err = t.Execute(os.Stdout, data)
if err != nil {
log.Fatal(err)
}
}
在上面的例子中,我们使用template.New
函数创建了一个template.Template
对象,并通过ParseFiles
方法设置了模板路径为/my/template/path/
,并指定了要渲染的模板文件名为template.html
。然后,我们通过t.Execute
方法渲染了模板。
/templates/pages/
目录下,将所有的邮件模板文件存放在/templates/emails/
目录下。
/templates
/pages
home.html
about.html
...
/emails
welcome.html
reset_password.html
...
...
当你需要渲染一个页面模板时,只需指定相对于模板路径的路径即可:
func main() {
// 设置模板路径
t, err := template.New("mytemplate").ParseFiles("/templates/pages/home.html")
if err != nil {
log.Fatal(err)
}
// 渲染模板
err = t.Execute(os.Stdout, data)
if err != nil {
log.Fatal(err)
}
}
func main() {
// 设置模板路径
t, err := template.New("mytemplate").ParseFiles("/templates/common/footer.html", "/templates/pages/home.html")
if err != nil {
log.Fatal(err)
}
// 渲染模板
err = t.Execute(os.Stdout, data)
if err != nil {
log.Fatal(err)
}
}
在上面的例子中,我们通过ParseFiles
方法同时载入了/templates/common/footer.html
和/templates/pages/home.html
两个模板文件,这样我们就可以在/templates/pages/home.html
中使用/templates/common/footer.html
提供的模板片段。