模板语法
介绍:双层大括号 {{ }}
是默认的模板界定符,用于在 HTML 模板文件中界定模板语法。
模板语法都包含在 {{
和 }}
中间。
{{ . }} 语句
{{ . }}
中的点表示当前对象。
传入结构体时,使用 .
访问结构体对应的字段;传入 map 时,使用 .
和 key 来取值。
with 关键字
{{ with pipeline }} T1 {{ end }}
如果 pipeline 为空则不产生输出,否则将
.
设为 pipeline 的值并执行 T1,不修改外面的.
{{ with pipeline }} T1 {{ else }} T0 {{ end }}
如果 pipeline 为空则不改变
.
并执行 T0,否则.
设为 pipeline 的值并执行 T1
with 区块外,{{ . }}
代表传入模板的数据,而在 with 区块内,则代表 pipeline 里的数据,如 {{ with .Errors.title }}
这个区块内, {{ . }}
代表 .Errors.title
。
pipeline
pipeline
是指产生数据的操作。比如 {{ . }}
、{{ .Name }}
等。
Go 的模板语法支持使用管道符号 |
连接多个命令,用法和 Unix 下的管道类似 - |
前面的命令会将运算结果(或返回值)传递给后一个命令的最后一个位置。
※ 注意: 并不是只有使用了 | 才是 pipeline。Go 的模板中,pipeline 的概念是传递数据,只要能产生数据的,都是 pipeline。
其他模板语法
注释
{{/* 注释 */}}
变量
$variable := {{ . }}
移除空格
移除空格: {{- .Name -}}
条件判断
{{ if pipeline }} T1 {{ end }}
{{ if pipeline }} T1 {{ else }} T0 {{ end }}
{{ if pipeline }} T1 {{ else if pipeline }} T0 {{ end }}
range 遍历
range
关键字用以在模板里遍历数据, pipeline
的值必须是数组、切片、字典或者通道。
两种写法:
{{ range pipeline }} T1 {{ end }}
如果 pipeline 的值其长度为 0,不会有任何输出
{{ range pipeline }} T1 {{ else }} T0 {{ end }}
如果 pipeline 的值其长度为 0,则会执行 T0
修改默认的标识符
如遇到与其他模板采用相同的标识符 {{}}
,可以修改标识符。
template.New("test").Delims("{[","]}").ParseFiles("filename.gohtml)