W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
視圖組件是?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"
[viewer]
paths = ["template", "/var/www/template"]
defaultFile = "index.html"
delimiters = ["${", "}"]
[viewer.data]
name = "gf"
version = "1.10.0"
隨后可以使用?g.View()
?獲取默認的單例對象時自動獲取并設置該配置。
多個?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
簡要說明:
SetConfig
?及?SetConfigWithMap
?來設置。
View
?對象的?Set*
?方法進行特定配置的設置。
View
?對象執(zhí)行視圖解析之前設置,避免并發(fā)安全問題。我們可以使用?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
?設置為了?["${", "}"]
?,但是模板中使用的是?["{{", "}}"]
?。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: