Go Gin 快速学习 【模板渲染】
go 模版渲染
templates模板
-
创建一个templates模板目录
# 创建模板目录 mkdir templates # 在 templates 创建 index.html 文件<!--index.html--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1 style="color: blueviolet">{{.title }}</h1> </body> </html> -
服务中加载 templates模板
package main import "github.com/gin-gonic/gin" func main() { router := gin.Default() // 加载 templates下所有的模板文件 router.LoadHTMLGlob("templates/*") router.GET("/ping", func(c *gin.Context) { c.HTML(200, "index.html", gin.H{ "title": "Hello, Gin!", }) }) router.Run(":8080") // 启动服务 }
静态文件处理
-
创建 static 静态文件夹,在项目根路下
# 在项目根路径下 创建 static mkdir static # 创建 css 和 js 的 文件目录 mkdir -p {css,js} -
在 static/css 和 static/js 目录下分别上传 css 文件和 js文件
-
重新编写 templates 下的 index.html
<!--index.html--> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{{.title}}</title> <!-- 引入本地 Bootstrap CSS --> <link href="/static/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <!-- 导航栏 --> <nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm"> <div class="container"> <a class="navbar-brand" href="#">{{.title}}</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav ms-auto"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">首页</a> </li> <li class="nav-item"> <a class="nav-link" href="#features">功能</a> </li> <li class="nav-item"> <a class="nav-link" href="#about">关于我们</a> </li> <li class="nav-item"> <a class="nav-link" href="#contact">联系我们</a> </li> </ul> </div> </div> </nav> <!-- 页头区域 --> <header class="bg-gradient bg-primary text-white py-12"> <div class="container text-center"> <h1 class="display-4 mb-4">{{.title}}</h1> <p class="lead mb-6">这是一个使用 Bootstrap 和 Gin 框架开发的示例网站</p> </div> </header> <!-- 引入本地 Bootstrap Bundle with Popper --> <script src="/static/js/bootstrap.bundle.min.js"></script> </body> </html>
数据响应
json
-
c.JSON() 输出JSON格式的数据
-
通过gin.H{} 编写json串
-
通过结构体,快速编写json
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
// json响应方式1: 通过 gin.H{} 快速创建JSON响应
r.GET("/json01", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
// json响应方式2: 通过结构体创建JSON响应
var response struct {
Message string `json:"message"`
Status int `json:"status"`
}
r.GET("/json02", func(c *gin.Context) {
response.Status = 200
response.Message = "pong"
c.JSON(200, response)
})
r.Run(":8080")
}
xml
- c.XML() 展示xml数据
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// xml 响应方式1: 通过 gin.H{} 快速创建xml响应
r.GET("/xml01", func(c *gin.Context) {
c.XML(http.StatusOK, gin.H{
"message": "pong",
"id": "001",
})
})
// xml响应方式2: 通过结构体创建xml响应
type Message struct {
Message string `xml:"message"`
Status string `xml:"status"`
ID int `xml:"id"`
}
var response Message
r.GET("/xml02", func(c *gin.Context) {
response.Status = "200"
response.Message = "pong"
response.ID = 1001
c.XML(http.StatusOK, response)
})
r.Run(":8080")
}

浙公网安备 33010602011771号