目录
一、简介
二、模版库
三、菜鸟实战
1、新建文件
2、编译和运行
3、运行结果
3.1、运行后服务启动,控制台输出
3.2、浏览器输入后结果
一、简介
在 Web 中, 我们通常需要在后端将一些数据渲染到 HTML 文档中, HTML 就可以在浏览器中显示,从而实现动态的网页效果。
模板可以被理解为事先定义好的 HTML 文档。模板渲染可以被简单理解为文本替换操作: 是后端用相应的数据去替换 HTML 文档中实现准备好的标记。模板技术多种多样,但本质是将模板文件和数据通过模板引擎生成最终的HTML文档。
二、模版库
Go 提供了两个基础模板库 :
- text/template
- html/template
html/template 在渲染页面模板时会在后台进行一些编码,以帮助防止造成代码注入(XSS 攻击),用的比较多,所以我们主要使用这个模版库来做实战。
三、菜鸟实战
实战场景:使用 html/template 模版渲染数据到浏览器中
实战场景:使用 html/template 模版渲染数据到浏览器中
马上安排!
1、新建文件
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"runtime"
)
// 用户信息
type User struct {
Name string
Gender string
Age int
}
// 显示数据
func render(w http.ResponseWriter, r *http.Request) {
//加载模板 解析模板, 此处输入文件绝对路径
t, err := template.ParseFiles("yourpath/index.html")
if err != nil {
log.Println("模版解析错误, err %v ", err)
return
}
// 渲染字符串
name := "user1"
//err = t.Execute(w, name)
// 渲染结构体
user := User{
Name: name,
Gender: "女",
Age: 23,
}
// 渲染 map
m := map[string]interface{}{
"name": name,
"gender": "男",
"age": 25,
}
//err = t.Execute(w, m)
// 渲染数组
carList := []string{
"汽车",
"火车",
"货车",
}
// 把对象传输到模板展示
err = t.Execute(w, map[string]interface{}{
"name": name,
"m": m,
"user": user,
"carList": carList,
})
if err != nil {
log.Println("渲染模版失败, err %v", err)
return
}
}
func main() {
// 使用内置函数打印
println("Hello", "菜鸟实战")
http.HandleFunc("/", render)
err := http.ListenAndServe(":8009", nil)
if err != nil {
log.Println("http服务启动异常, err: %v", err)
}
// 当前版本
fmt.Printf("版本: %s n", runtime.Version())
fmt.Printf("菜鸟实战,持续学习! n")
}
对应的模版文件 index.html 为
Hello
名称 {{ .user.Name }}
年龄 {{ .user.Age }}
性别 {{ .user.Gender }}
名称 {{ .m.name }}
年龄 {{ .m.age }}
性别 {{ .m.gender }}
{{if .carList}}
{{range .carList}}
{{ . }}
{{else}}
no rows{{end}}
{{else}}
carList为空
{{end}}
2、编译和运行
# 1、生成模块依赖
go mod init g014
# 2、编译
go build g014.go
# 3、编译后的目录结构
└── go-014
├── g014
├── g014.go
└── go.mod
└── index.html
# 4、运行
go run g014
3、运行结果
3.1、运行后服务启动,控制台输出
Hello 菜鸟实战
3.2、浏览器输入后结果
# 1、生成模块依赖
go mod init g014
# 2、编译
go build g014.go
# 3、编译后的目录结构
└── go-014
├── g014
├── g014.go
└── go.mod
└── index.html
# 4、运行
go run g014
3.1、运行后服务启动,控制台输出
Hello 菜鸟实战
3.2、浏览器输入后结果
Hello 菜鸟实战
菜鸟实战,持续学习!



