模板 – Golang从文件嵌入html

前端之家收集整理的这篇文章主要介绍了模板 – Golang从文件嵌入html前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有这样的 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)
如果使用 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>

猜你在找的Go相关文章