视图组件是GoFrame
框架核心的组件之一,当然也支持非常方便的配置管理功能。
配置对象定义: https://pkg.go.dev/github.com/gogf/gf/v2/os/gview#Config
视图组件支持配置文件,当使用g.View(单例名称)
获取View
单例对象时,将会自动通过默认的配置管理对象获取对应的View
配置。默认情况下会读取viewer.单例名称
配置项,当该配置项不存在时,将会读取viewer
配置项。
完整配置文件配置项及说明如下,其中配置项名称不区分大小写:
[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
对象执行视图解析之前设置,避免并发安全问题。SetConfigWithMap
方法我们可以使用SetConfigWithMap
方法通过Key-Value
键值对来设置/修改View
的特定配置,其余的配置使用默认配置即可。其中Key
的名称即是Config
这个struct
中的属性名称,并且不区分大小写,单词间也支持使用-
/_
/空格
符号连接,具体可参考 类型转换-Struct转换 章节转换规则。
简单示例:
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
,其他配置属性以此类推。
经常有小伙伴问,为神马我的模板解析没有生效?为神马页面上直接将我写的标签原木原样显示出来了?
这个时候请检查你的配置文件中是否有设置模板标签,常见的是delimiters
设置为了["${", "}"]
,但是模板中使用的是["{{", "}}"]
。