所在的位置: html >> html发展 >> Golang中的模板引擎

Golang中的模板引擎

常见GO语言的模板引擎

Irisofferssupportfor6templateparsersoutofthebox

Go模板

Go模板是一种功能强大的定制输出的方法,无论您是在创建网页、发送电子邮件、使用Buffalo、Go-hugo还是仅使用一些CLI,比如kubectl。

Go模板控制结构

Golangtemplate小抄

点字符(.)

在Go语法中,模板变量可以是布尔值、字符串、字符、整数、浮点数、虚数或复数常量。可以使用点{{.}}访问传递到模板的数据.如果数据是复杂类型,则可以使用点{{.FieldName}}访问其字段。如果数据包含多个复杂结构,则可以将Dots链接在一起。{{.Struct.StructTwo.Field}}

模板中的变量

{{$number:=.}}h1Itisdaynumber{{$number}}ofthemonth/h1

If/ElseStatements

h1Hello,{{if.Name}}{{.Name}}{{else}}the{{end}}!/h1

删除空白

我们可以通过忽略或最小化效果来更改我们的模板以更好地处理它,或者我们可以使用减号输出模板。

h1Hello,{{if.Name}}{{.Name}}{{-else}}Anonymous{{-end}}!/h1

RangeBlocks

typeItemstruct{  Namestring  Priceint}typeViewDatastruct{  Namestring  Items[]Item}

{{range.Items}}divh{{.Name}}/hspan${{.Price}}/span/div{{end}}

模板函数

获取索引值{{indexxnumber}}

bodyh1{{index.FavNums}}/h1/body

typepersonstruct{  Namestring  FavNums[]int}funcmain(){  tpl:=template.Must(template.ParseGlob("*.gohtml"))  tpl.Execute(os.Stdout,person{"Curtis",[]int{7,11,9}})}

andnot函数:

{{ifand.User.User.Admin}}Youaanadminuser!{{else}}Accessdenied!{{end}}

typeUserstruct{Adminbool}typeViewDatastruct{*User}

比较函数eq/ne/ge/gt/le/lt{{oparg1arg}}

eq函数比较特殊,可以拿多个参数和第一个参数进行比较:

{{eqarg1argargarg}}=arg1==arg

arg1==arg

arg1==arg

管道

函数调用可以链式调用,前一个函数的输出结果作为下一个函数调用的参数。html/template称之为管道,类似于linuxshell命令中的管道一样,它采用

分隔。

注意前一个命令的输出结果是作为下一个命令的最后一个参数,最终命令的输出结果就是这个管道的结果。

嵌套模板和布局

嵌套模板

嵌套模板可以用于经常跨模板、页脚或页眉使用的部分代码。与分别更新每个模板不同,我们可以使用所有其他模板都可以使用的嵌套模板。

{{define"footer"}}footer  pHeisthefooter/p/footer{{end}}

定义了一个名为“footer”的模板,可以在其他模板中使用,例如:

{{template"footer"}}

在模板之间传递变量

用于包含嵌套模板的template操作还允许第二个参数将数据传递给嵌套模板。

//Defineanestedtemplatecalledheader{{define"header"}}  h1{{.}}/h1{{end}}//Calltemplateandpassanameparameter{{range.Items}}div{{template"header".Name}}span${{.Price}}/span/div{{end}}

创建布局

//OmittedimportspackagevarLayoutDirstring="views/layouts"varbootstrap*template.Templatefuncmain(){  varerrerror  bootstrap,err=template.ParseGlob(LayoutDir+"/*.gohtml")  iferr!=nil{    panic(err)  }  


转载请注明:http://www.aierlanlan.com/tzrz/3607.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了