1、统一使用”{{}}”作为左右标签

2、上下文

  • “.” 访问当前位置的上下文
  • “$” 引用当前模板根级的上下文
  • “$.” 引用模板中根级上下文

3、支持go语言的符号

  • 字符串:{{“joker”}}
  • 原始字符串:{{joker}},不会转义
  • 字节类型:{{‘a’}} ,ascll码对应表
  • nil类型:{{print nil}},{{nil}}会报错

4、定义变量

  • 定义:{{$username := “joker”}}
  • 使用:{{$username}}

    注意:只能在当前模板中使用

5、pipeline
可以是上下文的变量输出,也可以是函数通过管道传递的返回值。

  • {{.name}} 是上下文的变量输出,是一个pipeline
  • {{.name | len}} 是函数通过管道传递的返回值,是一个pipeline

6、条件判断

  • if … else ….

    1. {{if .name}}
    2. xxx
    3. {{else}}
    4. yyy
    5. {{end}}
  • if嵌套

    1. {{if .A}}
    2. {{if .B}}
    3. xxx
    4. {{end}}
    5. {{end}}

7、循环

  • range ```html {{range .Arry}} {{.}} {{end}}

第二种

{{range $i,$v := .Arry}} {{$i}} # 脚标 {{$v}} # 值 {{end}}

  1. range也支持else,当长度为0的时候生效
  2. ```html
  3. {{range .Arry}}
  4. {{.}}
  5. {{else}}
  6. 没有值
  7. {{end}}

8、with
主要用于重定向的pipeline。

  1. # .artical是一个map类型
  2. {{with .artical}}
  3. {{.id}}
  4. {{.name}}
  5. {{end}}

with也支持else,当长度为0时生效

  1. {{with .artical}}
  2. xxx
  3. {{else}}
  4. 没有数据
  5. {{end}}

9、template
作用是引用另外一个模板文件。

  1. {{template "base.html"}}

如果要共享数据,则要传入上下文,如下

  1. {{template "base.html" .}}

10、注释

  1. {{/*注释*/}}