html/template包可安全渲染HTML,防止XSS。1. 从字符串或文件加载模板并传入数据渲染;2. 支持嵌套模板实现布局复用;3. 提供if、range等控制结构;4. 默认自动转义,可用template.HTML输出原始HTML;5. 结合net/http用于Web服务动态返回页面。

在Golang中,html/template 包是生成安全HTML页面的标准方式。它不仅能将数据动态渲染到HTML模板中,还能自动转义内容以防止XSS攻击。以下是使用 html/template 生成HTML页面的常用方法汇总。
最简单的用法是从字符串或文件加载模板,并将数据传入进行渲染。
// 示例:从字符串渲染模板package mainimport (
"html/template"
"log"
"os")
func main() {
const tpl = <code><h1>Hello, {{.Name}}!</h1>
t := template.Must(template.New("example").Parse(tpl))
data := struct{ Name string }{Name: "Alice"}
err := t.Execute(os.Stdout, data)
if err != nil {
log.Fatal(err)
}}
输出:<h1>Hello, Alice!</h1>
通常会把HTML结构放在独立文件中,便于维护。
立即学习“go语言免费学习笔记(深入)”;
// 文件:templates/index.html<!DOCTYPE html><html>
<head><title>{{.Title}}</title></head>
<body>
<h1>{{.Title}}</h1>
<p>欢迎用户:{{.User}}</p>
</body></html>
// Go代码加载并渲染
t, err := template.ParseFiles("templates/index.html")if err != nil {
log.Fatal(err)}
data := struct {
Title string
User string}{
Title: "首页",
User: "Bob",}
t.Execute(os.Stdout, data)
通过 template 动作实现头部、侧边栏等公共部分复用。
<!DOCTYPE html><html>
<head><title>{{block "title" .}}默认标题{{end}}</title></head>
<body>
{{block "content" .}}<p>默认内容</p>{{end}}
</body></html>
// 文件:templates/home.html
{{define "title"}}首页 - 我的网站{{end}}{{define "content"}}<h1>欢迎来到首页</h1>{{end}}
// 加载多个模板文件
t := template.Must(template.ParseGlob("templates/*.html"))t.ExecuteTemplate(os.Stdout, "layout", nil)
这样就能实现通用布局和页面内容分离。
模板支持 if、range 等控制逻辑。
{{if .LoggedIn}}
<p>你好,{{.Username}}!</p>{{else}}
<p>请登录。</p>{{end}}
<ul>{{range .Items}}
<li>{{.}}</li>{{end}}</ul>
// 数据示例
data := map[string]interface{}{
"LoggedIn": true,
"Username": "Charlie",
"Items": []string{"苹果", "香蕉", "橙子"},}
默认所有输出都会被HTML转义。如果需要输出原始HTML,可使用 template.HTML 类型。
data := struct {
Content template.HTML}{
Content: template.HTML("<strong>加粗内容</strong>"),}
{{.Content}} 将不会被转义,直接输出HTML标签。
结合 net/http 提供动态网页。
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("templates/layout.html", "templates/home.html")
t.ExecuteTemplate(w, "layout", nil))http.ListenAndServe(":8080", nil)
每次请求时渲染模板并返回给客户端。
基本上就这些。掌握这些方法后,你可以在Go项目中灵活构建安全、结构清晰的HTML页面。关键是理解数据传递、模板复用和转义机制。不复杂但容易忽略细节。
以上就是如何在Golang中使用html/template生成HTML页面_Golang html/template HTML生成方法汇总的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号