首页 > 后端开发 > Golang > 如何在 Go 的 HTML/Template 包中实现基本模板?

如何在 Go 的 HTML/Template 包中实现基本模板?

Mary-Kate Olsen
发布: 2024-11-10 09:38:02
原创
222 人浏览过

How can I implement Base Templates in Go's HTML/Template package?

在 Go 的 HTML/模板中实现基本模板

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板