视图组件是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"示例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
简要说明:
- 可以通过
SetConfig及SetConfigWithMap来设置。 - 也可以使用
View对象的Set*方法进行特定配置的设置。 - 主要注意的是,配置项在
View对象执行视图解析之前设置,避免并发安全问题。
SetConfigWithMap方法
我们可以使用SetConfigWithMap方法通过Key-Value键值对来设置/修改View的特定配置,其余的配置使用默认配置即可。其中Key的名称即是Config这个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设置为了["${", "}"],但是模板中使用的是["{{", "}}"]。
网站名称:创新互联GoFrame教程:GoFrame 模板引擎-模板配置
浏览路径:http://www.jxjierui.cn/article/djhpohh.html


咨询
建站咨询
