GO语言
01GO基础-001GO语言简介
01GO基础-002语言环境安装
01GO基础-003Go 语言结构
01GO基础-004Go 语言基础语法1
01GO基础-004Go 语言基础语法2
01GO基础-004Go 语言基础语法3
01GO基础-005Go 语言数据类型
01GO基础-006Go 语言变量
01GO基础-007Go 语言常量
01GO基础-008Go 语言运算符
01GO基础-009条件语句
01GO基础-010循环语句
01GO基础-011函数
01GO基础-012变量作用域
01GO基础-013数组
01GO基础-014指针
01GO基础-015结构体
01GO基础-016切片
01GO基础-017范围(Range)
01GO基础-018Map
01GO基础-019递归函数
01GO基础-020类型转换
01GO基础-021接口
01GO基础-022异常处理
01GO基础-023并发
01GO基础-024strings
01GO基础-025可变参数
01GO基础-026接口2
01GO基础-027异常处理2
01GO基础-028sync包详解
01GO基础-029Context
02GO进阶001包
02GO进阶002init()函数
02GO进阶003包的注意点
02GO进阶003使用go module导入本地包
02GO进阶004 time包
02GO进阶005 file操作
02GO进阶006 io操作
02GO进阶007 os包(文件 I/O、文件属性、目录与链接、创建和移除链接)
02GO进阶008复制文件
02GO进阶009断点续传
02GO进阶010 bufio包
02GO进阶011ioutil包
02GO进阶012遍历文件夹
02GO进阶013并发编程介绍
02GO进阶014Goroutine协程
02GO进阶015 GPM
02GO进阶016 runtime包
02GO进阶017 Channel
02GO进阶018 Goroutine池
02GO进阶019 定时器
02GO进阶020 select
02GO进阶021并发安全和锁
02GO进阶022sync
02GO进阶023原子操作
02GO进阶024 GMP原理与调度
02GO进阶025爬虫小案例
02GO进阶026 面向对象-匿名字段
02GO进阶026 面向对象-接口
02GO进阶027网络编程-互联网协议介绍
02GO进阶027网络编程-socket
02GO进阶027网络编程-http编程
02GO进阶027网络编程-websocket编程
02GO进阶028数据操作-MYSQL
02GO进阶028数据操作-REDIS
02GO进阶028数据操作-RTCD
02GO进阶028数据操作-ZOOKEEPER
02GO进阶028数据操作-KAFKA
02GO进阶028数据操作-RabbitMQ
02GO进阶028数据操作-ElasticSearch
02GO进阶028数据操作-NSQ
02GO进阶028数据操作-memcached
02GO进阶028数据操作-GORM
02GO进阶029beego框架-安装
02GO进阶029beego框架-快速入门
02GO进阶029beego框架-MVC架构介绍-controller设计-参数配置
02GO进阶029beego框架-MVC架构介绍-controller设计-路由设置
02GO进阶029beego框架-MVC架构介绍-controller设计-控制器函数
02GO进阶029beego框架-MVC架构介绍-controller设计-XSRF过滤
02GO进阶029beego框架-MVC架构介绍-controller设计-请求数据处理
02GO进阶029beego框架-MVC架构介绍-controller设计-Session控制
02GO进阶029beego框架-MVC架构介绍-controller设计-过滤器
02GO进阶029beego框架-MVC架构介绍-controller设计-Flash数据
02GO进阶029beego框架-MVC架构介绍-controller设计-URL构建
02GO进阶029beego框架-MVC架构介绍-controller设计-多种格式数据输出
02GO进阶029beego框架-MVC架构介绍-controller设计-表单数据验证
02GO进阶029beego框架-MVC架构介绍-controller设计-错误处理
02GO进阶029beego框架-MVC架构介绍-controller设计-日志处理
02GO进阶029beego框架-MVC架构介绍-model设计-概述
02GO进阶029beego框架-MVC架构介绍-model设计-CRUD操作
02GO进阶029beego框架-MVC架构介绍-model设计-高级查询
02GO进阶029beego框架-MVC架构介绍-model设计-原生SQL查询
02GO进阶029beego框架-MVC架构介绍-model设计-构造查询
02GO进阶029beego框架-MVC架构介绍-model设计-事务处理
02GO进阶029beego框架-MVC架构介绍-model设计-模型定义
02GO进阶029beego框架-MVC架构介绍-model设计-命令模式
02GO进阶029beego框架-MVC架构介绍-model设计-测试用例
02GO进阶029beego框架-MVC架构介绍-view设计-beego 模板语法指南
02GO进阶029beego框架-MVC架构介绍-view设计-模板处理
02GO进阶029beego框架-MVC架构介绍-view设计-其他
本文档使用 MrDoc 发布
-
+
首页
02GO进阶029beego框架-MVC架构介绍-view设计-beego 模板语法指南
## 基本语法 go 统一使用了 {{ 和 }} 作为左右标签,没有其他的标签符号。如果您想要修改为其它符号,可以参考 模板标签。 使用 . 来访问当前位置的上下文 使用 $ 来引用当前模板根级的上下文 使用 $var 来访问创建的变量 [more] ### 模板中支持的 go 语言符号 ``` {{"string"}} // 一般 string {{`raw string`}} // 原始 string {{'c'}} // byte {{print nil}} // nil 也被支持 ``` ### 模板中的 pipeline 可以是上下文的变量输出,也可以是函数通过管道传递的返回值 `{{. | FuncA | FuncB | FuncC}}` 当 pipeline 的值等于: - false 或 0 - nil 的指针或 interface - 长度为 0 的 array, slice, map, string 那么这个 pipeline 被认为是空 ### if ... else ... end `{{if pipeline}}{{end}}` if 判断时,pipeline 为空时,相当于判断为 False ``` this.Data["IsLogin"] = true this.Data["IsHome"] = true this.Data["IsAbout"] = true ``` 支持嵌套的循环 ``` {{if .IsHome}} {{else}} {{if .IsAbout}}{{end}} {{end}} ``` 也可以使用 else if 进行 ``` {{if .IsHome}} {{else if .IsAbout}} {{else}} {{end}} ``` ### range ... end `{{range pipeline}}{{.}}{{end}}` pipeline 支持的类型为 array, slice, map, channel range 循环内部的 . 改变为以上类型的子元素 对应的值长度为 0 时,range 不会执行,. 不会改变 ``` pages := []struct { Num int }{{10}, {20}, {30}} this.Data["Total"] = 100 this.Data["Pages"] = pages ``` 使用 .Num 输出子元素的 Num 属性,使用 $. 引用模板中的根级上下文 ``` {{range .Pages}} {{.Num}} of {{$.Total}} {{end}} ``` 使用创建的变量,在这里和 go 中的 range 用法是相同的。 ``` {{range $index, $elem := .Pages}} {{$index}} - {{$elem.Num}} - {{.Num}} of {{$.Total}} {{end}} ``` range 也支持 else ``` {{range .Pages}} {{else}} {{/* 当 .Pages 为空 或者 长度为 0 时会执行这里 */}} {{end}} ``` ### with ... end `{{with pipeline}}{{end}}` with 用于重定向 pipeline ``` {{with .Field.NestField.SubField}} {{.Var}} {{end}} ``` 也可以对变量赋值操作 ``` {{with $value := "My name is %s"}} {{printf . "slene"}} {{end}} ``` with 也支持 else ``` {{with pipeline}} {{else}} {{/* 当 pipeline 为空时会执行这里 */}} {{end}} ``` ### define define 可以用来定义自模板,可用于模块定义和模板嵌套 ``` {{define "loop"}} <li>{{.Name}}</li> {{end}} ``` 使用 template 调用模板 ``` <ul> {{range .Items}} {{template "loop" .}} {{end}} </ul> ``` ### template `{{template "模板名" pipeline}}` 将对应的上下文 pipeline 传给模板,才可以在模板中调用 ### Beego 中支持直接载入文件模板 `{{template "path/to/head.html" .}}` Beego 会依据你设置的模板路径读取 head.html 在模板中可以接着载入其他模板,对于模板的分模块处理很有用处 ### 注释 允许多行文本注释,不允许嵌套 ```go {{/* comment content support new line */}} ``` ## 基本函数 变量可以使用符号 | 在函数间传递 {{.Con | markdown | addlinks}} {{.Name | printf "%s"}} 使用括号 {{printf "nums is %s %d" (printf "%d %d" 1 2) 3}} ### and {{and .X .Y .Z}} and 会逐一判断每个参数,将返回第一个为空的参数,否则就返回最后一个非空参数 ### call {{call .Field.Func .Arg1 .Arg2}} call 可以调用函数,并传入参数 调用的函数需要返回 1 个值 或者 2 个值,返回两个值时,第二个值用于返回 error 类型的错误。返回的错误不等于 nil 时,执行将终止。 ### index index 支持 map, slice, array, string,读取指定类型对应下标的值 this.Data["Maps"] = map[string]string{"name": "Beego"} {{index .Maps "name"}} ### len {{printf "The content length is %d" (.Content|len)}} 返回对应类型的长度,支持类型:map, slice, array, string, chan ### not not 返回输入参数的否定值,if true then false else true ### or {{or .X .Y .Z}} or 会逐一判断每个参数,将返回第一个非空的参数,否则就返回最后一个参数 ### print 对应 fmt.Sprint ### printf 对应 fmt.Sprintf ### println 对应 fmt.Sprintln ### urlquery {{urlquery "http://beego.me"}} 将返回 http%3A%2F%2Fbeego.me ### eq / ne / lt / le / gt / ge 这类函数一般配合在 if 中使用 eq: arg1 == arg2 ne: arg1 != arg2 lt: arg1 < arg2 le: arg1 <= arg2 gt: arg1 > arg2 ge: arg1 >= arg2 eq 和其他函数不一样的地方是,支持多个参数,和下面的逻辑判断相同 arg1==arg2 || arg1==arg3 || arg1==arg4 ... 与 if 一起使用 {{if eq true .Var1 .Var2 .Var3}}{{end}} {{if lt 100 200}}{{end}} 更多文档请访问 beego 官网。 2.1. 基本语法 go 统一使用了 {{ 和 }} 作为左右标签,没有其他的标签符号。如果您想要修改为其它符号,可以参考 模板标签。 使用 . 来访问当前位置的上下文 使用 $ 来引用当前模板根级的上下文 使用 $var 来访问创建的变量 [more] 模板中支持的 go 语言符号 {{"string"}} // 一般 string {{`raw string`}} // 原始 string {{'c'}} // byte {{print nil}} // nil 也被支持 模板中的 pipeline 可以是上下文的变量输出,也可以是函数通过管道传递的返回值 {{. | FuncA | FuncB | FuncC}} 当 pipeline 的值等于: false 或 0 nil 的指针或 interface 长度为 0 的 array, slice, map, string 那么这个 pipeline 被认为是空 if ... else ... end {{if pipeline}}{{end}} if 判断时,pipeline 为空时,相当于判断为 False this.Data["IsLogin"] = true this.Data["IsHome"] = true this.Data["IsAbout"] = true 支持嵌套的循环 {{if .IsHome}} {{else}} {{if .IsAbout}}{{end}} {{end}} 也可以使用 else if 进行 {{if .IsHome}} {{else if .IsAbout}} {{else}} {{end}} range ... end {{range pipeline}}{{.}}{{end}} pipeline 支持的类型为 array, slice, map, channel range 循环内部的 . 改变为以上类型的子元素 对应的值长度为 0 时,range 不会执行,. 不会改变 pages := []struct { Num int }{{10}, {20}, {30}} this.Data["Total"] = 100 this.Data["Pages"] = pages 使用 .Num 输出子元素的 Num 属性,使用 $. 引用模板中的根级上下文 {{range .Pages}} {{.Num}} of {{$.Total}} {{end}} 使用创建的变量,在这里和 go 中的 range 用法是相同的。 {{range $index, $elem := .Pages}} {{$index}} - {{$elem.Num}} - {{.Num}} of {{$.Total}} {{end}} range 也支持 else {{range .Pages}} {{else}} {{/* 当 .Pages 为空 或者 长度为 0 时会执行这里 */}} {{end}} with ... end {{with pipeline}}{{end}} with 用于重定向 pipeline {{with .Field.NestField.SubField}} {{.Var}} {{end}} 也可以对变量赋值操作 {{with $value := "My name is %s"}} {{printf . "slene"}} {{end}} with 也支持 else {{with pipeline}} {{else}} {{/* 当 pipeline 为空时会执行这里 */}} {{end}} define define 可以用来定义自模板,可用于模块定义和模板嵌套 {{define "loop"}} <li>{{.Name}}</li> {{end}} 使用 template 调用模板 <ul> {{range .Items}} {{template "loop" .}} {{end}} </ul> template {{template "模板名" pipeline}} 将对应的上下文 pipeline 传给模板,才可以在模板中调用 Beego 中支持直接载入文件模板 {{template "path/to/head.html" .}} Beego 会依据你设置的模板路径读取 head.html 在模板中可以接着载入其他模板,对于模板的分模块处理很有用处 注释 允许多行文本注释,不允许嵌套 {{/* comment content support new line */}} 2.2. 基本函数 变量可以使用符号 | 在函数间传递 {{.Con | markdown | addlinks}} {{.Name | printf "%s"}} 使用括号 {{printf "nums is %s %d" (printf "%d %d" 1 2) 3}} and {{and .X .Y .Z}} and 会逐一判断每个参数,将返回第一个为空的参数,否则就返回最后一个非空参数 call {{call .Field.Func .Arg1 .Arg2}} call 可以调用函数,并传入参数 调用的函数需要返回 1 个值 或者 2 个值,返回两个值时,第二个值用于返回 error 类型的错误。返回的错误不等于 nil 时,执行将终止。 index index 支持 map, slice, array, string,读取指定类型对应下标的值 this.Data["Maps"] = map[string]string{"name": "Beego"} {{index .Maps "name"}} len {{printf "The content length is %d" (.Content|len)}} 返回对应类型的长度,支持类型:map, slice, array, string, chan not not 返回输入参数的否定值,if true then false else true or {{or .X .Y .Z}} or 会逐一判断每个参数,将返回第一个非空的参数,否则就返回最后一个参数 print 对应 fmt.Sprint printf 对应 fmt.Sprintf println 对应 fmt.Sprintln urlquery {{urlquery "http://beego.me"}} 将返回 http%3A%2F%2Fbeego.me eq / ne / lt / le / gt / ge 这类函数一般配合在 if 中使用 eq: arg1 == arg2 ne: arg1 != arg2 lt: arg1 < arg2 le: arg1 <= arg2 gt: arg1 > arg2 ge: arg1 >= arg2 eq 和其他函数不一样的地方是,支持多个参数,和下面的逻辑判断相同 arg1==arg2 || arg1==arg3 || arg1==arg4 ... 与 if 一起使用 {{if eq true .Var1 .Var2 .Var3}}{{end}} {{if lt 100 200}}{{end}} 更多文档请访问 beego 官网。http://beego.me/docs/mvc/view/view.md
admin
2024年12月26日 16:07
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码