2

2 つのテキスト ファイル (go テンプレート) があるとします。

child.tmpl

TEXT1 
Hello {{ . }}

top.tmpl

TEXT2
{{ template "child.tmpl" "argument"}}

child.tmplテンプレートはネストされていますtop.tmpl

それらを解析する典型的なプログラムは次のようになります:

package main

import (
    "os"
    "text/template"
)

func main() {
    t := template.Must(template.ParseFiles("child.tmpl", "top.tmpl")
    t.ExecuteTemplate(os.Stdout, "top.tmpl", nil)
}

{{ . }}表記法を使用して、最上位のテンプレートに埋め込むテンプレートを引数として渡す方法はありますか? 何かのようなもの{{ template {{.}} "argument" }}

  • より一般的には、複数の子テンプレートのトップレベル テンプレートのように使用できるように、レイアウト テンプレートを定義する最良の方法は何ですか?
4

1 に答える 1

2

問題を解決するには、次の 2 つの方法が認められています。

1 つ目は、独自のテンプレート インクルージョン関数を作成し、それをtemplate.FuncMapを通じてテンプレートに として登録することtemplate.Funcsです。

もう 1 つの方法は、テンプレート{{define xxx}}でブロックを使用することです。次に、同じテンプレートを定義する 2 つの異なるファイルを作成できます。

  • file1.html:{{define body}}...{{end}}
  • file2.html:{{define body}}...{{end}}

必要に応じて正しいファイルを解析し、テンプレートで{{template body "argument"}}.

私の意見では、最初のオプションはより柔軟です。

于 2013-09-23T06:28:41.600 に答える