Categories: GoFrame 教程

GoFrame 模板引擎-模板配置

视图组件是​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

简要说明: 

  1. 可以通过​SetConfig​及​SetConfigWithMap​来设置。
  2. 也可以使用​View​对象的​Set*​方法进行特定配置的设置。
  3. 主要注意的是,配置项在​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​设置为了​["${", "}"]​,但是模板中使用的是​["{{", "}}"]​。

唐伯虎点蚊香

前端小白,想各位学习!

Share
Published by
唐伯虎点蚊香

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago