我想解析同一个
template.Template
结构中的所有模板,但我不知道如何解析,而且它也给了我一个错误。我有下一个代码:
package main
import (
"embed"
"html/template"
"log"
"os"
)
//go:embed internal/web/views/*
var viewsFS embed.FS
func main() {
tmpls, err := template.New("").ParseFS(viewsFS, "**/*.html")
if err != nil {
log.Fatal(err) // Debugging I finded out that the error is here so the code below is irrelevant
}
tmpls.ExecuteTemplate(os.Stdout, "pages/home", nil)
}
给我
ParseFS
方法的错误是下一个:
$ 2023/09/16 23:36:42 template: pattern matches no files: `**/*.html`
我认为错误出在我不知道的
patterns
方法的ParseFS
参数中。
我的
internal/web/views
目录中有很多html文件,事实上该文件夹中的所有文件都是html文件,每个文件都有一个或多个{{define}}
类型的模板。
我将不胜感激任何帮助,谢谢
@Charlie-Tumahai 将此 有关 Go 中的 Glob 模式的文档(官方 Go Package 网站) 归功于他
因此,为了解析同一个
template.Template
结构中的所有模板,我必须执行下一步:
package main
import (
"embed"
"html/template"
"log"
"os"
)
//go:embed internal/web/views/*
var viewsFS embed.FS
func main() {
tmpls, err := template.New("").
ParseFS(viewsFS,
"internal/web/views/*/*.html",
"internal/web/views/*/*/*.html",
/* Add more `*` if you have templates that are more nested */
)
if err != nil {
log.Fatal(err) // Debugging I finded out that the error is here so the code below is irrelevant
}
tmpls.ExecuteTemplate(os.Stdout, "pages/home", nil)
}
我所做的是更多地研究 Glob 模式并学习如何在 Go 中使用它,Go 中的 Glob 模式的制作方式与任何其他语言都不同。