首页 > 其他分享 >随记一下之模板语法

随记一下之模板语法

时间:2023-02-27 09:35:41浏览次数:33  
标签:pipeline end arg1 arg2 T1 语法 模板 随记

模板语法

介绍:双层大括号 {{ }} 是默认的模板界定符,用于在 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)

比较函数

eq      如果arg1 == arg2则返回真
ne      如果arg1 != arg2则返回真
lt      如果arg1 <  arg2则返回真
le      如果arg1 <= arg2则返回真
gt      如果arg1 >  arg2则返回真
ge      如果arg1 >= arg2则返回真

为了简化多参数相等检测,eq(只有eq)可以接受2个或更多个参数,它会将第一个参数和其余参数依次比较,返回下式的结果:

{{eq arg1 arg2 arg3}}

解析模板

tmpl.Execute(wr io.Writer, data interface{}) error {}

  • wr :响应对象
  • data :返回的响应数据

tmpl.ExecuteTemplate(wr io.Writer, name stirng, data interface{}) error {}

  • wr :响应对象
  • name :模板名称, define 定义的模板名称,不是文件名
  • data :返回的响应数据

标签:pipeline,end,arg1,arg2,T1,语法,模板,随记
From: https://www.cnblogs.com/xylx1/p/17158566.html

相关文章

  • 随记一下之会话
    会话控制用户登录从技术上讲是叫会话控制。HTTP是无状态的,要保证会话控制,需要利用Cookie来做。两种方式:不带后端存储带后端存储全Cookie会话不带后端存储的......
  • 随记一下之 bcrypt
    用户密码加密bcrypt是专门为密码存储而设计的算法,基于Blowfish加密算法变形而来,由NielsProvos和DavidMazières发表于1999年的USENIX。bcrypt最大的好处是......
  • Markdown基本语法
    简介Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出HTML、PDF以及本身的.md格......
  • WPF知识点备忘录——控件模板
    模板<Application.Resources><ResourceDictionary><!--将画刷等从模板拆分出来,方便重用--><RadialGradientBrushRadiusX="1"R......
  • c++函数模板
    函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)替换。例如如果定义一个2个数交换值的函数,如果2个数是int,那就需要定义一......
  • 11_03_第六阶段:大前端进阶||07-Vue详解||P4:第一个Vue程序 && P5:Vue基本语法【观看狂神
    1.什么是MVVM2.为什么要使用MVVM3.MVVM的组成部分4.VueVue的核心就是实现了DOM监听与数据绑定5.第一个Vue程序开发版本包含完整的警告和调试模式:https://vuejs.org/js......
  • java的基本语法
    Java的基本语法注释注释不会被执行书写注释是一个非常好的习惯平时写代码一定要规范类别://单行注释,/**/多行注释,/***/文档注释.  ......
  • 2023.2.26【模板】扩展Lucas定理
    2023.2.26【模板】扩展Lucas定理题目概述求\(\binom{n}{m}mod\)\(p\)的值,不保证\(p\)为质数算法流程(扩展和普通算法毫无关系)由于\(p\)不是质数,我们考虑[SDOI201......
  • 日语语法备忘
    1形容词基本用法1类形容词句型肯定句式:...はAいです否定句式:...はAくありません/くないですい=>く+ありませんい=>く+ないですありません的......
  • 龟速乘&快速乘&快速幂&压位高精快速幂 模板
    龟速乘#defineintlonglonginlineintmul_slow(intx,inty,intmod){ intres=0; while(y){ if(y&1)res=(res+x)%mod; x=(x+x)%mod; y>>=1; } returnres......