dongzhankou2090
2015-11-29 14:56
浏览 188
已采纳

Golang从文件中嵌入HTML

How can I do in Golang if I have an HTML file like this:

<html>
  <head lang="en">

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

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

and I want to embed a part of code into to header tags from an other file like this:

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

My try:

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

index := template.Must(template.ParseFiles("index.html"))
index.Execute(w, c)
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douhuike3199 2015-11-30 13:36
    已采纳

    If you parse all your template files with template.ParseFiles() or with template.ParseGlob(), the templates can refer to each other, they can include each other.

    Change your index.html to include the header.html like this:

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

    And then the complete program (which parses files from the current directory, executes "index.html" and writes the result to the standard output):

    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)
    }
    

    With template.ParseGlob() it could look like this:

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

    The output (printed on the console):

    <html>
      <head lang="en">
    
      </head>
      <body>
        <header><div id="logo"></div><div id="motto"></div></header>
        <div class="panel panel-default">
    
        </div>
      </body>
    </html>
    
    点赞 评论

相关推荐 更多相似问题