GoFrame 模板引擎-模板配置

2022-04-01 11:17 更新

視圖組件是?GoFrame?框架核心的組件之一,當然也支持非常方便的配置管理功能。

配置對象

配置對象定義: https://pkg.go.dev/github.com/gogf/gf/v2/os/gview#Config

配置文件

視圖組件支持配置文件,當使用?g.View?(單例名稱)獲取?View?單例對象時,將會自動通過默認的配置管理對象獲取對應的?View?配置。默認情況下會讀取?viewer.單例名稱?配置項,當該配置項不存在時,將會讀取?viewer?配置項。

完整配置文件配置項及說明如下,其中配置項名稱不區(qū)分大小寫:

[viewer]
    Paths       = ["/var/www/template"] # 模板文件搜索目錄路徑,建議使用絕對路徑。默認為當前程序工作路徑
    DefaultFile = "index.html"          # 默認解析的模板引擎文件。默認為"index.html"
    Delimiters  =  ["${", "}"]          # 模板引擎變量分隔符號。默認為 ["{{", "}}"]
    AutoEncode  = false                 # 是否默認對變量內容進行XSS編碼。默認為false
    [viewer.Data]                       # 自定義的全局Key-Value鍵值對,將在模板解析中可被直接使用到
        Key1 = "Value1"
        Key2 = "Value2"

示例1,默認配置項

[viewer]
    paths       = ["template", "/var/www/template"]
    defaultFile = "index.html"
    delimiters  =  ["${", "}"]
    [viewer.data]
        name    = "gf"
        version = "1.10.0"

隨后可以使用?g.View()?獲取默認的單例對象時自動獲取并設置該配置。

示例2,多個配置項

多個?View?對象的配置示例:

[viewer]
    paths       = ["template", "/var/www/template"]
    defaultFile = "index.html"
    delimiters  =  ["${", "}"]
    [viewer.data]
        name    = "gf"
        version = "1.10.0"
    [viewer.view1]
        defaultFile = "layout.html"
        delimiters  = ["${", "}"]
    [viewer.view2]
        defaultFile = "main.html"
        delimiters  = ["#{", "}"]

我們可以通過單例對象名稱獲取對應配置的?View?單例對象:

// 對應 viewer.view1 配置項
v1 := g.View("view1")
// 對應 viewer.view2 配置項
v2 := g.View("view2")
// 對應默認配置項 viewer
v3 := g.View("none")
// 對應默認配置項 viewer
v4 := g.View()

配置方法

方法列表: https://pkg.go.dev/github.com/gogf/gf/v2/os/gview

簡要說明: 

  1. 可以通過?SetConfig?及?SetConfigWithMap?來設置。
  2. 也可以使用?View?對象的?Set*?方法進行特定配置的設置。
  3. 主要注意的是,配置項在?View?對象執(zhí)行視圖解析之前設置,避免并發(fā)安全問題。

SetConfigWithMap方法

我們可以使用?SetConfigWithMap?方法通過?Key-Value?鍵值對來設置/修改?View?的特定配置,其余的配置使用默認配置即可。其中?Key?的名稱即是?Config?這個?struct?中的屬性名稱,并且不區(qū)分大小寫,單詞間也支持使用?-?/?_?/空格符號連接。

簡單示例:

package main

import (
	"context"
	"fmt"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gview"
)

func main() {
	view := gview.New()
	view.SetConfigWithMap(g.Map{
		"Paths":       []string{"template"},
		"DefaultFile": "index.html",
		"Delimiters":  []string{"${", "}"},
		"Data": g.Map{
			"name":    "gf",
			"version": "1.10.0",
		},
	})
	result, err := view.ParseContent(context.TODO(), "hello ${.name}, version: ${.version}")
	if err != nil {
		panic(err)
	}
	fmt.Println(result)
}

其中?DefaultFile?表示默認解析的模板文件,鍵名也可以使用?defaultFile?, ?default-File?, ?default_file?, ?default file?,其他配置屬性以此類推。

注意事項

經(jīng)常有小伙伴問,為什么我的模板解析沒有生效?為什么頁面上直接將我寫的標簽原模原樣顯示出來了?

這個時候請檢查你的配置文件中是否有設置模板標簽,常見的是?delimiters?設置為了?["${", "}"]?,但是模板中使用的是?["{{", "}}"]?。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號