Golang 从文件中嵌入 html
Golang embed html from file
如果我有这样的 HTML 文件,我该如何在 Golang 中执行操作:
<html>
<head lang="en">
</head>
<body>
<header>{{.Header}}</header>
<div class="panel panel-default">
</div>
</body>
</html>
我想将一部分代码嵌入到另一个文件的 header 标签中,如下所示:
<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()
or with 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>
如果我有这样的 HTML 文件,我该如何在 Golang 中执行操作:
<html>
<head lang="en">
</head>
<body>
<header>{{.Header}}</header>
<div class="panel panel-default">
</div>
</body>
</html>
我想将一部分代码嵌入到另一个文件的 header 标签中,如下所示:
<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()
or with 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>