乐闻世界logo
搜索文章和话题

Go 如何使用“ html / template ”包生成 html 模板?

1 个月前提问
1 个月前修改
浏览次数11

1个答案

1

在Go语言中,html/template 包提供了一个强大的框架用于生成安全的HTML输出。这个包会自动对插入的数据进行适当的转义,防范跨站脚本攻击(XSS)。以下是使用这个包的基本步骤:

1. 导入包

首先,我们需要导入 html/template 包。

go
import ( "html/template" "os" )

2. 定义模板

模板可以直接以字符串的形式定义,也可以存储在一个文件中。模板中的 {{}} 是用来绑定数据的地方。

直接定义模板字符串:

go
const tpl = ` <html> <head><title>{{.Title}}</title></head> <body> <h1>{{.Heading}}</h1> <p>{{.Content}}</p> </body> </html> `

或者,从文件中加载模板:

假设有一个名为 template.html 的文件:

html
<html> <head><title>{{.Title}}</title></head> <body> <h1>{{.Heading}}</h1> <p>{{.Content}}</p> </body> </html>

3. 解析模板

使用 template.New 创建一个模板,然后使用 Parse 方法解析定义好的模板字符串。

go
tmpl, err := template.New("webpage").Parse(tpl) if err != nil { panic(err) }

或者,如果模板是存储在文件中的:

go
tmpl, err := template.ParseFiles("template.html") if err != nil { panic(err) }

4. 定义数据

定义一个结构体来表示模板中将要使用的数据。

go
type PageData struct { Title string Heading string Content string }

5. 执行模板

创建一个 PageData 的实例,并填充数据,然后执行模板。

go
data := PageData{ Title: "我的网页", Heading: "欢迎来到我的网页", Content: "这里是一些介绍信息。", } err = tmpl.Execute(os.Stdout, data) if err != nil { panic(err) }

这段代码会将模板和数据结合,输出到 os.Stdout,你也可以替换为任何 io.Writer 如文件、缓冲区等。

示例应用

假如我们正在开发一个简单的网站,需要显示不同页面的内容。通过上述步骤,我们可以轻松地为每个页面创建不同的模板,只需更改 PageData 中的内容,就可以重用模板生成多个页面。

这种方式使得代码更加模块化和可重用,同时保持了输出的安全性。

2024年8月7日 17:58 回复

你的答案