Go Gin模板渲染如何实现高效处理?

摘要:go 模版渲染 templates模板 创建一个templates模板目录 # 创建模板目录 mkdir templates # 在 templates 创建 index.html 文件 <!--index.html-
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") } protobuf (rpc) # todo??