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页面的常用方法汇总。
1. 基本模板渲染
最简单的用法是从字符串或文件加载模板,并将数据传入进行渲染。
// 示例:从字符串渲染模板
package mainimport (
"html/template"
"log"
"os")
func main() {
const tpl =
Hello, {{.Name}}!
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)
}}
输出:
Hello, Alice!
2. 加载HTML文件模板
通常会把HTML结构放在独立文件中,便于维护。
立即学习“go语言免费学习笔记(深入)”;
// 文件:templates/index.html
{{.Title}}
欢迎用户:{{.User}}
// 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)
3. 使用模板嵌套(布局与块)
通过 template 动作实现头部、侧边栏等公共部分复用。
// 文件:templates/layout.html
{{block "content" .}}
默认内容
{{end}}
// 文件:templates/home.html
{{define "title"}}首页 - 我的网站{{end}}{{define "content"}}
欢迎来到首页
{{end}}
// 加载多个模板文件
t := template.Must(template.ParseGlob("templates/*.html"))t.ExecuteTemplate(os.Stdout, "layout", nil)
这样就能实现通用布局和页面内容分离。
4. 控制结构:条件判断与循环
模板支持 if、range 等控制逻辑。
{{if .LoggedIn}}
你好,{{.Username}}!
{{else}}
请登录。
{{end}}
{{range .Items}}
{{end}}
// 数据示例
data := map[string]interface{}{
"LoggedIn": true,
"Username": "Charlie",
"Items": []string{"苹果", "香蕉", "橙子"},}
5. 避免转义:使用 template.HTML 类型
默认所有输出都会被HTML转义。如果需要输出原始HTML,可使用 template.HTML 类型。
data := struct {
Content template.HTML}{
Content: template.HTML("加粗内容"),}
{{.Content}} 将不会被转义,直接输出HTML标签。
6. 在Web服务中使用模板
结合 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生成方法汇总的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1421529.html
微信扫一扫
支付宝扫一扫