beego——模板语法
一、基本语法
go统一使用{{和}}作为左右标签,没有其它的标签符号。
使用"."来访问当前位置的上下文,使用"$"来引用当前模板根级的上下文,使用$var来访问创建的变量。
1.模板中支持的go语言符号
{{"string"}} // 一般 string {{`raw string`}} // 原始 string {{'c'}} // byte {{print nil}} // nil 也被支持
2.模板中的pipeline(管道)
可以是上下文的变量输出,也可以是函数通过管道传递的返回值。
{{. | FuncA | FuncB | FuncC}}
当pipeline的值等于:
- false或0
- nil的指针或interface
- 长度为0的array、slice、map、string
那么这个pipeline被认为是空。
3.逻辑处理
(1)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}}
(2)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}}
(3)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}}
(4)define
define 可以用来定义自模板,可用于模块定义和模板嵌套
{{define "loop"}}<li>{{.Name}}</li> {{end}}
使用 template 调用模板
<ul>{{range .Items}}{{template "loop" .}}{{end}} </ul>
(5)template
{{template "模板名" pipeline}}
将对应的上下文 pipeline 传给模板,才可以在模板中调用
3.beego中支持直接载入文件模板
{{template "path/to/head.html" .}}
Beego 会依据你设置的模板路径读取 head.html
在模板中可以接着载入其他模板,对于模板的分模块处理很有用处
4.注释
允许多行文本注释,不允许嵌套
{{/* comment content support new line */}}
二、基本函数
变量可以使用符号|在函数间传递
{{.Con | markdown | addlinks}} {{.Name | printf "%s"}}
使用括号
{{printf "nums is %s %d" (printf "%d %d" 1 2) 3}}
(1)and
{{and .X .Y .Z}}
and 会逐一判断每个参数,将返回第一个为空的参数,否则就返回最后一个非空参数
(2)call
{{call .Field.Func .Arg1 .Arg2}}
call 可以调用函数,并传入参数
调用的函数需要返回 1 个值 或者 2 个值,返回两个值时,第二个值用于返回 error 类型的错误。返回的错误不等于 nil 时,执行将终止。
(3)index
index 支持 map, slice, array, string,读取指定类型对应下标的值
this.Data["Maps"] = map[string]string{"name": "Beego"} {{index .Maps "name"}}
(4)len
{{printf "The content length is %d" (.Content|len)}}
返回对应类型的长度,支持类型:map, slice, array, string, chan
(5)not
not 返回输入参数的否定值,if true then false else true
(6)or
{{or .X .Y .Z}}
or 会逐一判断每个参数,将返回第一个非空的参数,否则就返回最后一个参数
(7)print
对应 fmt.Sprint
(8)printf
对应fmt.Sprintf
(9)pfintln
对应fmt.Sprintf
(10)urlquery
{{urlquery "http://beego.me"}}
将返回
http%3A%2F%2Fbeego.me
(11)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}}
转载于:https://www.cnblogs.com/yangmingxianshen/p/10126311.html
beego——模板语法相关推荐
- beego模板语法循环html块,beego 模版语法
beego 模板语法指南 本文讲述 beego 中使用的模板语法,与 go 模板语法基本相同. 基本语法 go 统一使用了 {{ 和 }} 作为左右标签,没有其他的标签符号.如果您想要修改为其它符号, ...
- beego模板语法循环html块,1.69 beego 模板语法指南 - Beego 中文文档
本文讲述 beego 中使用的模板语法,与 go 模板语法基本相同. 基本语法 go 统一使用了 {{ 和 }} 作为左右标签,没有其他的标签符号.如果您想要修改为其它符号,可以参考 模板标签. 使用 ...
- Beego模板 循环和判断几个例子
Beego的前端几乎是另一种语言.一些循环.判断,不细看文档真的做不出来. 猫哥按:尽量在controller里把送出去的数据规整好了,尽量别再模板里处理,会省心很多的. 0. Beego的View模 ...
- Vue的模板语法学习
模板语法 1.插值 a.文本 数据绑定最常见的形式就是使用 "Mustache" 语法(双大括号)的文本插值 我们在普通插值的时候无论何时,绑定的数据对象上 msg 属性发生了改变 ...
- Django 的模板语法之过滤器
后端朝前端页面传递数据的方式# 第一种return render(request,'index.html',{'n':n})# 第二种return render(request,'index.html ...
- django之模板语法
1. 变量 Django 模板中遍历复杂数据结构的关键是句点字符 句点符 views.py def index(request):'''模板语法:渲染变量 -> {{}}1. 深度查询,用的句点 ...
- angular2的模板语法
Angular 应用管理着用户之所见和所为,并通过 Component 类的实例(组件)和面向用户的模板来与用户交互. 从使用模型-视图-控制器 (MVC) 或模型-视图-视图模型 (MVVM) 的经 ...
- Vue.js 模板语法
模板语法 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 H ...
- 4.Vue 模板语法
Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了. Vue模板语法 这篇文章我们来 ...
最新文章
- 学习XHTML的强烈欲望、!
- NetworkManager 冲突
- 九、序列参数集Sequence Paramater Set(SPS)解析
- 入门机器学习,看这些材料就够了
- win10系统安装Redis3.2.100
- 你可能不知道的switch
- .net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?
- 错误:readline/readline.h:没有那个文件或目录解决方法
- 黑大选修计算机模拟物理学,黑龙江大学学分制选课指南.doc
- bootstrap table 光标_第三章之Bootstrap 表格与按钮功能
- [myeclipse] 官方中文网站
- java 构造函数 和 构造代码块
- 医疗器械质量管理体系 - ISO 13485 简介
- 以Spring Boot的方式显示图片或下载文件到浏览器
- python一个类调用另一个类的方法_python – 从另一个类调用类方法
- 叶笑嘴角露出来一个不知是什么意味的笑容
- logparser使用_分析您的Web服务器数据并使用LogParser和Log Parser Lizard GUI进行授权
- 路由器:什么是软路由,看完本篇文章你就懂了
- IOS开发之延时执行的几种方法
- c语言 前置声明,C语言编程开发前置声明都有哪些作用