首頁 > 後端開發 > Golang > 主體

如何使用 template.ParseFS 函數解析 embed.FS 模板

WBOY
發布: 2024-02-13 08:57:08
轉載
607 人瀏覽過

如何使用 template.ParseFS 函数解析 embed.FS 模板

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}} 類型的模板。

如果有任何幫助,我將不勝感激,謝謝

解決方法

@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中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!