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
參數中,我不知道。
我在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中文網其他相關文章!