template.lang.php,golang标准库html/template的使用方法(未完待续)

以下样例部分来自learnku.com实战课程

模板文件里的内容

创建文章 —— 咪啪咪啪

{{ with .Errors.title }}

{{ . }}

{{ end }}

{{ .Body }}

{{ with .Errors.body }}

{{ . }}

{{ end }}

提交

传入模板的示例数据为

type ArticlesFormData struct {

Title, Body string

URL *url.URL

Errors map[string]string

}

{{ . }} 语句

上面这句话是模板body里面第一句

{{ . }} 中的点表示当前对象,当我们传入一个结构体对象的时候,我们可以使用 . 来访问结构体的对应字段,同理, 当我们传入的变量是 map 时,也可以在模板文件中通过 . 根据key来取值

紧接着看下面这段语句

{{ with .Errors.title }}

{{ . }}

{{ end }}

with 关键字

语法如下

{{ with pipeline }} T1 {{ end }}

如果 pipeline 为空则不产生输出,否则将 . 设为pipeline的值并执行T1, 不修改外面的.

{{ with pipeline }} T1 {{ else }} T0 {{ end }}

如果pipeline为空则不改变 . 并执行T0,否则将 . 设为pipeline的值并执行T1。

with 区块外,{{ . }} 代表传入模板的数据,而在 with 区块内,则代表 pipline 里的数据。

如 {{ with .Errors.title }} 这个区块内,{{ . }} 代表 .Errors.title

举个例子:

比如我们传入的数据为:

data := ArticlesFormData{

Title: "a",

Body: "b",

URL: storeURL,

Errors: map[string]string{

body: "内容长度需大于或等于10个字节",

title: "标题长度需介于3-40",

},

}

则上面模板解析之后会输出为

标题长度需介于3-40

因为 .Errors.title 存在,所以 . 在with作用域内就相当于 .Errors.title, 也就是传进来的对象的title值。

pipeline

pipeline 是指产生数据的操作。比如 {{ . }} 、{{ .Name }} 等。Go的模板语法支持使用管道符 | 链接多个命令,用法和 Unix 下的管道类似 —— | 前面的命令会将运算结果(或返回值)传递给后一个命令的最后一个位置。

注意:并不是只有使用了 | 才是 pipeline。Go 的模板中,pipeline 的概念是传递数据,只要能产生数据的,都是 pipeline。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值