php小编小新为您带来一篇关于如何使用template.ParseFS函数解析embed.FS模板的指南。在使用Go语言开发项目时,我们经常会使用embed包来嵌入静态文件,而template.ParseFS函数则可以帮助我们解析这些嵌入的模板文件。本文将详细介绍template.ParseFS函数的使用方法,帮助您在开发过程中更加灵活地处理模板文件,提升项目的开发效率。让我们一起来看看吧!
我想解析同一个 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`
我认为错误出在 ParseFS
方法的 patterns
方法的 patterns
参数中,我不知道。
我在 internal/web/views
目录中有很多 html 文件,实际上该文件夹中的所有文件都是 html 文件,每个文件都有一个或多个 {{define}}
类型的模板。 p>
如果有任何帮助,我将不胜感激,谢谢
@Charlie-Tumahai 将此文档(Go Package 官方网站)归功于他Go 中的全局模式
因此,为了解析同一个 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) } tmpls.ExecuteTemplate(os.Stdout, "pages/home", nil) }
我所做的是更多地研究 Glob 模式并学习如何在 Go 中使用它,Go 中的 Glob 模式的制作方式与任何其他语言都不同。
以上是如何使用 template.ParseFS 函数解析 embed.FS 模板的详细内容。更多信息请关注PHP中文网其他相关文章!