如何使用go模板用FuncMap解析html个文件
How to use go template to parse html files with FuncMap
我使用以下代码来解析 html 模板。效果很好。
func test(w http.ResponseWriter, req *http.Request) {
data := struct {A int B int }{A: 2, B: 3}
t := template.New("test.html").Funcs(template.FuncMap{"add": add})
t, err := t.ParseFiles("test.html")
if err!=nil{
log.Println(err)
}
t.Execute(w, data)
}
func add(a, b int) int {
return a + b
}
和html模板test.html。
<html>
<head>
<title></title>
</head>
<body>
<input type="text" value="{{add .A .B}}">
</body>
</html>
但是当我将 html 文件移动到另一个目录时。然后使用下面的代码。输出始终为空。
t := template.New("./templates/test.html").Funcs(template.FuncMap{"add": add})
t, err := t.ParseFiles("./templates/test.html")
谁能告诉我怎么了?或者html/template包不能这样用?
问题是您的程序(html/template
程序包)找不到 test.html
文件。当你指定相对路径时(你的是相对路径),它们被解析到当前工作目录。
您必须确保 html files/templates 位于正确的位置。例如,如果您使用 go run ...
启动您的应用程序,相对路径将解析为您所在的文件夹,这将是工作目录。
此相对路径:"./templates/test.html"
将尝试解析当前文件夹的 templates
子文件夹中的文件。确保它在那里。
另一种选择是使用绝对路径。
还有一个重要提示:不要在处理函数中解析模板!它运行以服务每个传入请求。而是在包 init()
函数中解析它们一次。
更多详情:
It takes too much time when using "template" package to generate a dynamic web page to client in golang
我使用以下代码来解析 html 模板。效果很好。
func test(w http.ResponseWriter, req *http.Request) {
data := struct {A int B int }{A: 2, B: 3}
t := template.New("test.html").Funcs(template.FuncMap{"add": add})
t, err := t.ParseFiles("test.html")
if err!=nil{
log.Println(err)
}
t.Execute(w, data)
}
func add(a, b int) int {
return a + b
}
和html模板test.html。
<html>
<head>
<title></title>
</head>
<body>
<input type="text" value="{{add .A .B}}">
</body>
</html>
但是当我将 html 文件移动到另一个目录时。然后使用下面的代码。输出始终为空。
t := template.New("./templates/test.html").Funcs(template.FuncMap{"add": add})
t, err := t.ParseFiles("./templates/test.html")
谁能告诉我怎么了?或者html/template包不能这样用?
问题是您的程序(html/template
程序包)找不到 test.html
文件。当你指定相对路径时(你的是相对路径),它们被解析到当前工作目录。
您必须确保 html files/templates 位于正确的位置。例如,如果您使用 go run ...
启动您的应用程序,相对路径将解析为您所在的文件夹,这将是工作目录。
此相对路径:"./templates/test.html"
将尝试解析当前文件夹的 templates
子文件夹中的文件。确保它在那里。
另一种选择是使用绝对路径。
还有一个重要提示:不要在处理函数中解析模板!它运行以服务每个传入请求。而是在包 init()
函数中解析它们一次。
更多详情:
It takes too much time when using "template" package to generate a dynamic web page to client in golang