10

次のような HTML ファイルがある場合、Golang で行うにはどうすればよいですか。

<html>
  <head lang="en">

  </head>
  <body>
    <header>{{.Header}}</header>
    <div class="panel panel-default">

    </div>
  </body>
</html>

そして、コードの一部を次のように他のファイルからヘッダータグに埋め込みたい:

<div id="logo"></div><div id="motto"></div>

私の試み:

header, _ := template.ParseFiles("header.html")
c := Content{Header: ""}
header.Execute(c.Header, nil)

index := template.Must(template.ParseFiles("index.html"))
index.Execute(w, c)
4

1 に答える 1

11

template.ParseFiles()または を使用してすべてのテンプレート ファイルを解析するとtemplate.ParseGlob()、テンプレートは相互に参照でき、相互に含めることができます。

index.html次のようなものを含めるheader.htmlように変更します。

<html>
  <head lang="en">

  </head>
  <body>
    <header>{{template "header.html"}}</header>
    <div class="panel panel-default">

    </div>
  </body>
</html>

次に、完全なプログラム (現在のディレクトリからファイルを解析し、実行"index.html"して、結果を標準出力に書き込みます):

t, err := template.ParseFiles("index.html", "header.html")
if err != nil {
    panic(err)
}

err = t.ExecuteTemplate(os.Stdout, "index.html", nil)
if err != nil {
    panic(err)
}

template.ParseGlob()次のようになります。

t, err := template.ParseGlob("*.html")
// ...and the rest is the same...

出力 (コンソールに出力):

<html>
  <head lang="en">

  </head>
  <body>
    <header><div id="logo"></div><div id="motto"></div></header>
    <div class="panel panel-default">

    </div>
  </body>
</html>
于 2015-11-30T13:36:30.970 に答える