标准库之template
1|0Template
html/template
包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template
包相同的接口,Go语言中输出HTML的场景都应使用text/template
包。- 功能同python的Django框架的模板语言类似
1|11. 模板
- 在基于MVC的Web架构中,我们通常需要在后端渲染一些数据到HTML文件中,从而实现动态的网页效果。
1|21. 模板示例
-
通过将模板应用于一个数据结构(即该数据结构作为模板的参数)来执行,来获得输出。模板中的注释引用数据接口的元素(一般如结构体的字段或者字典的键)来控制执行过程和获取需要呈现的值。模板执行时会遍历结构并将指针表示为’.‘(称之为”dot”)指向运行过程中数据结构的当前位置的值。
-
用作模板的输入文本必须是utf-8编码的文本。”Action”—数据运算和控制单位—由”“界定;在Action之外的所有文本都不做修改的拷贝到输出中。Action内部不能有换行,但注释可以有换行。
-
HTML文件代码如下:
我们的HTTP server端代码如下:
1|32. 模板语法
(1){{.}}
-
模板语法都包含在
{{和}}
中间,其中{{.}}
中的点表示当前对象。 -
当我们传入一个结构体对象时,我们可以根据
.
来访问结构体的对应字段。例如:
- HTML文件代码如下:
- 同理,当我们传入的变量是map时,也可以在模板文件中通过.根据key来取值。
(2)注释
(3)pipeline
-
pipeline是指产生数据的操作。比如
{{.}}
、{{.Name}}
等。Go的模板语法中支持使用管道符号|链接多个命令,用法和unix下的管道类似:|前面的命令会将运算结果(或返回值)传递给后一个命令的最后一个位置。 -
注意 : 并不是只有使用了|才是pipeline。Go的模板语法中,pipeline的概念是传递数据,只要能产生数据的,都是pipeline。
(4)变量
- Action里可以初始化一个变量来捕获管道的执行结果。初始化语法如下:
- 其中$variable是变量的名字。声明变量的action不会产生任何输出。
1|43. 条件判断
- Go模板语法中的条件判断有以下几种:
(1)range
- Go的模板语法中使用range关键字进行遍历,有以下两种写法,其中pipeline的值必须是数组、切片、字典或者通道。
(2)with
1|54. 预定义函数
-
执行模板时,函数从两个函数字典中查找:首先是模板函数字典,然后是全局函数字典。一般不在模板内定义函数,而是使用Funcs方法添加函数到模板里。
-
预定义的全局函数如下:
1|65. 比较函数
-
布尔函数会将任何类型的零值视为假,其余视为真。
-
下面是定义为函数的二元比较运算的集合:
- 为了简化多参数相等检测,eq(只有eq)可以接受2个或更多个参数,它会将第一个参数和其余参数依次比较,返回下式的结果:
- 比较函数只适用于基本类型(或重定义的基本类型,如”type Celsius float32”)。但是,整数和浮点数不能互相比较。
1|76. 自定义函数
- Go的模板支持自定义函数。
- 我们可以在模板文件hello.html中使用我们自定义的kua函数了。
1|87. 嵌套template
-
我们可以在template中嵌套其他的template。这个template可以是单独的文件,也可以是通过define定义的template。
-
举个例子: t.html文件内容如下:
- ul.html文件内容如下:
- 我们注册一个templDemo路由处理函数.
- tmplDemo函数的具体内容如下:
__EOF__

本文链接:https://www.cnblogs.com/Mcoming/p/18073212.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix