新聞中心
模板引擎默認(rèn)使用了 ?{{? 和 ?}}? 作為左右閉合標(biāo)簽,開(kāi)發(fā)者可通過(guò)?gview.SetDelimiters?方法設(shè)置自定義的模板閉合標(biāo)簽。

使用 ?.? 來(lái)訪問(wèn)當(dāng)前對(duì)象的值(模板局部變量)。
使用 ?$? 來(lái)引用當(dāng)前模板根級(jí)的上下文(模板全局變量)。
使用 ?$var? 來(lái)訪問(wèn)特定的模板變量。
模板中支持的 GO 語(yǔ)言符號(hào)
{{"string"}} // 一般 string
{{`raw string`}} // 原始 string
{{'c'}} // byte
{{print nil}} // nil 也被支持模板中的 ?pipeline ?
可以是上下文的變量輸出,也可以是函數(shù)通過(guò)管道傳遞的返回值
{{. | FuncA | FuncB | FuncC}}當(dāng)?pipeline?的值等于:
- ?
false?或?0? - ?
nil?的指針或?interface? - 長(zhǎng)度為?
0?的?array?, ?slice?, ?map?, ?string?
那么這個(gè)?pipeline?被認(rèn)為是空。
需要注意:在?gf?模板引擎中,當(dāng)模板中展示的指定變量不存在時(shí),將會(huì)顯示為空(標(biāo)準(zhǔn)庫(kù)模板引擎會(huì)展示??)。
if … else … end
{{if pipeline}}...{{end}}?if?判斷時(shí),?pipeline?為空時(shí),相當(dāng)于判斷為?false?。
支持嵌套的循環(huán)
{{if .condition}}
...
{{else}}
{{if .condition2}}
...
{{end}}
{{end}}也可以使用?else if?進(jìn)行
{{if .condition}}
...
{{else if .condition2}}
...
{{else}}
...
{{end}}
range … end
{{range pipeline}} {{.}} {{end}}?pipeline?支持的類型為?slice?, ?map?, ?channel?。
注意:在?range?循環(huán)內(nèi)部,?.? 符號(hào)會(huì)被覆蓋為以上類型的子元素(局部變量)。如果想在循環(huán)中訪問(wèn)外部變量(全局變量),請(qǐng)加上?$?符號(hào),如:?{{$.Session.Name}} ?
此外,對(duì)應(yīng)的值長(zhǎng)度為?0?時(shí),?range?不會(huì)執(zhí)行,?.? 不會(huì)改變。
例如,遍歷?map?:
{{range $key, $value := .MapContent}}
{{$key}}:{{$value}}
{{end}}例如,遍歷?slice?:
{{range $index, $elem := .SliceContent}}
{{range $key, $value := $elem}}
{{$key}}:{{$value}}
{{end}}
{{end}}
with … end
{{with pipeline}}...{{end}}?with?用于重定向?pipeline?
{{with .Field.NestField.SubField}}
{{.Var}}
{{end}}
define
?define?可以用來(lái)自定義模板內(nèi)容塊(給一段模板內(nèi)容定義一個(gè)模板名稱),可用于模塊定義和模板嵌套(使用在?template?標(biāo)簽中)。
{{define "loop"}}
{{.Name}}
{{end}}其中?loop?為該模板內(nèi)容塊的名稱,隨后可使用template標(biāo)簽調(diào)用模板:
{{range .Items}}
{{template "loop" .}}
{{end}}
?define?標(biāo)簽需要結(jié)合?template?標(biāo)簽一起使用,并且支持跨模板使用(在同一模板目錄/子目錄下有效,原理是使用的?ParseFiles?方法解析模板文件)。
template
{{template "模板名稱" pipeline}}將對(duì)應(yīng)的上下文?pipeline?傳給模板,才可以在模板中調(diào)用。
注意:?template?標(biāo)簽參數(shù)為模板名稱,而不是模板文件路徑,?template?標(biāo)簽不支持模板文件路徑。
?template?標(biāo)簽需要結(jié)合?define?標(biāo)簽一起使用,并且支持跨模板使用(在同一模板目錄/子目錄下有效,原理是使用的?ParseFiles?方法解析模板文件)。
include
該標(biāo)簽為?gf?框架模板引擎新增標(biāo)簽
{{include "模板文件名(需要帶完整文件名后綴)" pipeline}}在模板中可以使用?include?標(biāo)簽載入其他模板(任意路徑),模板文件名支持相對(duì)路徑以及文件的系統(tǒng)絕對(duì)路徑。如果想要把當(dāng)前模板的模板變量傳遞給子模板(嵌套模板),可以這樣:
{{include "模板文件名(需要帶完整文件名后綴)" .}}與?template?標(biāo)簽的區(qū)別是:?include?僅支持文件路徑,不支持模板名稱;而?tempalte?標(biāo)簽僅支持模板名稱,不支持文件路徑。
注釋
允許多行文本注釋,不允許嵌套。
{{/*
comment content
support new line
*/}} 分享標(biāo)題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame模板引擎-模板標(biāo)簽
文章來(lái)源:http://m.fisionsoft.com.cn/article/ccchhos.html


咨詢
建站咨詢
