> Gin 框架默認封裝了golang內置的html/template包用于處理html模版,如果你開發的是接口服務,不提供html頁面可以跳過本章內容。
> 前置技術知識點:Go模版引擎相關教程:https://www.tizi365.com/archives/85.html
[TOC]
## 返回html結果的例子
**后端代碼**
~~~
func main() {
// 初始化gin對象
router := gin.Default()
// 首先加載templates目錄下面的所有模版文件,模版文件擴展名隨意
router.LoadHTMLGlob("templates/*")
// 綁定一個url路由 /index
router.GET("/index", func(c *gin.Context) {
// 通過HTML函數返回html代碼
// 第二個參數是模版文件名字
// 第三個參數是map類型,代表模版參數
// gin.H 是map[string]interface{}類型的別名
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "Main website",
})
})
// 啟動http服務,并且綁定在8080端口
router.Run(":8080")
}
~~~
**前端代碼**
> 文件名:`templates/index.html`
~~~
<html>
<h1>
{{ .title }}
</h1>
</html>
~~~
## 處理模版子目錄的情況
> 一般在項目中,templates目錄下還會按照業務進行劃分目錄
**后端代碼**
~~~
func main() {
router := gin.Default()
// 加載templates目錄下面的所有模版文件,包括子目錄
// **/* 代表所有子目錄下的所有文件
router.LoadHTMLGlob("templates/**/*")
router.GET("/posts/index", func(c *gin.Context) {
// 子目錄的模版文件,需要加上目錄名,例如:posts/index.tmpl
c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{
"title": "Posts",
})
})
router.GET("/users/index", func(c *gin.Context) {
// 子目錄的模版文件,需要加上目錄名,例如:users/index.tmpl
c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
"title": "Users",
})
})
router.Run(":8080")
}
~~~
**前端代碼**
> 文件名:`templates/posts/index.tmpl`
~~~
{{ define "posts/index.tmpl" }}
<html>
<h1>{{ .title }}</h1>
<p>Using posts/index.tmpl</p>
</html>
{{ end }}
~~~
> 文件名:`templates/users/index.tmpl`
~~~
{{ define "users/index.tmpl" }}
<html>
<h1>{{ .title }}</h1>
<p>Using users/index.tmpl</p>
</html>
{{ end }}
~~~
- 基礎知識
- 開發環境
- 包名規則
- 包初始化 (init)
- 基礎數據類型
- 基礎類型轉換
- 格式化輸出
- go指針
- 流程控制語句
- 函數定義
- 匿名函數
- 數組和切片
- map集合
- 結構體
- Interface接口
- 日期處理
- 數學計算
- 正則表達式
- 協程 (并發處理)
- channel
- waitgroup
- mutex (鎖機制)
- websocket
- protobuf
- Redis
- 錯誤處理
- 打包程序
- NSQ消息隊列
- 單元測試
- beego
- 安裝入門
- Gin
- 快速入門
- 路由與控制器
- 處理請求參數
- 表單驗證
- 處理響應結果
- 渲染HTML模版
- 訪問靜態文件
- Gin中間件
- Cookie處理
- Session處理
- Gin上傳文件
- swagger
- pprof性能測試
- GORM
- 入門教程
- 模型定義
- 數據庫連接
- 插入數據
- 查詢數據
- 更新數據
- 刪除數據
- 事務處理
- 關聯查詢
- 屬于 (BELONG TO)
- 一對一 (Has One)
- 一對多 (Has Many)
- 多對多 (Many to Many)
- 預加載 (Preloading)
- 錯誤處理
- 第三方常用插件
- viper 讀取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷鍵