在 Web 应用程序中处理复杂布局时,创建一个基本模板作为其他模板的基础通常很有用。页。在 Go 的 html/template 包中,这可以使用 {{define}} 和 {{template}} 指令来实现。
考虑以下示例,其中您有一个基本布局文件 (base.html):
<!DOCTYPE html> <html lang="en"> <body> header... {{template "content" .}} footer... </body> </html>
以及使用自己的自定义内容重用此基本布局的单独页面(page1.html 和 page2.html):
{{define "content"}} <div> <h1>Page1</h1> </div> {{end}} {{template "base.html"}}
{{define "content"}} <div> <h1>Page2</h1> </div> {{end}} {{template "base.html"}}
您遇到的问题是页面 1 和页面 2 都使用相同的 HTML 进行渲染,该 HTML 是在 page2.html 中定义的。为了解决这个问题,我们需要确保两个页面在 {{template}} 块中声明并使用自己独特的内容部分。
更好的方法是在单独的文件中定义模板内容,如图所示下面:
base.html:
{{define "base"}} <!DOCTYPE html> <html lang="en"> <body> header... {{template "content" .}} footer... </body> </html> {{end}}
page1.html:
{{define "content"}} I'm page 1 {{end}}
page2 .html:
{{define "content"}} I'm page 2 {{end}}
在您的应用程序中,您可以使用 template.New() 和 ParseFiles() 将内容和基本模板文件解析为模板对象。随后,您可以使用 ExecuteTemplate() 使用所需的上下文执行基本模板来构建最终的 HTML。
tmpl, err := template.New("").ParseFiles("page1.html", "base.html") // check your err err = tmpl.ExecuteTemplate(w, "base", yourContext)
以上是如何在 Go 的 HTML/Template 包中实现基本模板?的详细内容。更多信息请关注PHP中文网其他相关文章!