Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
            页面加载耗时 0.00 毫秒·物理内存 155.8MB ·虚拟内存 1438.3MB
        
        欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
        
        
        gin 支持加载 HTML 模板, 然后根据模板参数进行配置并返回相应的数据,本质上就是字符串替换 LoadHTMLGlob() 方法可以加载模板文件。
例如:main.go 文件如下:
package main
import (
    "net/http"
    "github.com/gin-gonic/gin"
)
func main() {
    engine := gin.Default()
    engine.LoadHTMLGlob("tem/*")
    engine.GET("/index", func(c *gin.Context) {
        c.HTML(http.StatusOK, "index.html", gin.H{"title": "我是测试", "ce": "123456"})
    })
    engine.Run()
}
index.html 模板如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{.title}}</title>
</head>
    <body>
        fgkjdskjdsh{{.ce}}
    </body>
</html>
文件目录结构如下:
    test
    ├── go.mod
    ├── go.sum
    ├── main.go
    └── tem
        └── index.html
如果你的目录结构是下面的情况:
    test
    ├── go.mod
    ├── go.sum
    ├── main.go
    └── tem
        └── user
            └── index.html
go 文件代码如下:
package main
import (
    "net/http"
    "github.com/gin-gonic/gin"
)
func main() {
    engine := gin.Default()
    engine.LoadHTMLGlob("tem/**/*")
    engine.GET("/index", func(c *gin.Context) {
        c.HTML(http.StatusOK, "user/index.html", gin.H{"title": "我是测试", "address": "www.5lmh.com"})
    })
    engine.Run()
}
html 文件代码如下:
{{ define "user/index.html" }}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{.title}}</title>
</head>
<body>
    fgkjdskjdsh{{.address}}
</body>
</html>
{{ end }}
如果你想进行头尾分离就是下面这种写法:
go 文件代码如下:
package main
import (
    "net/http"
    "github.com/gin-gonic/gin"
)
func main() {
    engine := gin.Default()
    engine.LoadHTMLGlob("tem/**/*")
    engine.GET("/index", func(c *gin.Context) {
        c.HTML(http.StatusOK, "user/index.html", gin.H{"title": "我是测试", "address": "www.5lmh.com"})
    })
    engine.Run()
}
user/index.html文件代码如下:
{{ define "user/index.html" }}
{{template "public/header" .}}
fgkjdskjdsh{{.address}}
{{template "public/footer" .}}
{{ end }}
public/header.html文件代码:
{{define "public/header"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{.title}}</title>
</head>
<body>
{{end}}
public/footer.html文件代码:
    {{define "public/footer"}}
    </body>
    </html>
{{ end }}
如果你需要引入静态文件需要定义一个静态文件目录
engine.Static("/assets", "./assets")
                        
                        
            
            
            HTTP 是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出。cookie 就是解决 HTTP 协议无状态的方案之一。cookie 实际上就是服务器保存在客户端浏览器的一段信息。浏览器有了 cookie 之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求。gin 框架提供了 cookie 操作的支持。