1. 程式人生 > 其它 >Gin框架系列之模板與靜態檔案

Gin框架系列之模板與靜態檔案

一、模板的使用

1、載入模板路徑

當使用gin.Default方法建立一個router後需要載入模板路徑,載入的方法可以使用:

  • LoadHTMLGlob  只有一個引數,萬用字元,如:router.LoadHTMLGlob("templates/*"),查詢當前專案路徑下template資料夾下所有的html檔案

  • LoadHTMLFiles 不定長引數,可以傳多個字串,如:router.LoadHTMLFiles("template/index.html","template/user.html"),指定所有要使用的html檔案路徑

推薦使用LoadHTMLGlob ,如果存在多級目錄可以這樣指定:

兩級:engine.LoadHTMLGlob("templates/**/*")
三級:engine.LoadHTMLGlob("templates/**/**/*")
...

2、掛載路由

router.GET("/index", Hello)

3、編寫檢視函式

func Hello(ctx *gin.Context)  {
    ctx.HTML(http.StatusOK, "home/index.html","hello home!")
}

在試圖函式中指定模板路徑以及渲染到前端的資料。

4、模板檔案編寫

在專案的template目錄下新建home目錄然後新建index.html檔案:

{{ define "home/index.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/css/index.css">
</head>
<body>
<div class="content">{{ . }}</div>
</body>
</html> {{ end }}

對於二級以及多級目錄需要在檔案開頭通過define指定檔案的路徑,否則程式識別不到。

5、啟動程式

func main()  {
    router := gin.Default()
    // 載入模板路徑
    router.LoadHTMLGlob("template/**/*")

    router.GET("/index", Hello)

    router.Run(":8080")
}

通過router.Run方法啟動,注意不要在IDE中啟動,通過cmd視窗的方式,否則模板找不到。

二、靜態檔案的使用

當使用html時,難免使用到css、js、images等,此時需要一種方式進行引入。

1、載入靜態檔案

func main()  {
    router := gin.Default()
    // 載入模板路徑
    router.LoadHTMLGlob("template/**/*")

    // 載入靜態檔案,注意第一個路徑引數對映第二個目錄引數,所以第一個引數可以隨意,但是在html中引入時需要與其保持一致
    router.Static("/static", "static")

    router.GET("/index", Hello)

    router.Run(":8080")
}

2、模板中引入

{{ define "home/index.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/css/index.css">
</head>
<body>
<div class="content">{{ . }}</div>
</body>
</html>
{{ end }}

三、專案說明

1、專案結構

demo01
    │  main.go
    │  README.md
    │
    ├─static
    │  ├─css
    │  │      index.css
    │  │
    │  ├─images
    │  └─js
    └─template
        ├─goods
        │      goods.html
        │
        ├─home
        │      index.html
        │
        └─order
                order.html

2、主要檔案說明

  • main.go
package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)


func Hello(ctx *gin.Context)  {
    ctx.HTML(http.StatusOK, "home/index.html","hello home!")
}

func main()  {
    router := gin.Default()
    // 載入模板路徑 二級目錄
    router.LoadHTMLGlob("template/**/*")
    // 載入靜態檔案
    router.Static("/static", "static")

    router.GET("/index", Hello)

    router.Run(":8080")
}