Maison  >  Article  >  développement back-end  >  Comment analyser un modèle embed.FS à l'aide de la fonction template.ParseFS

Comment analyser un modèle embed.FS à l'aide de la fonction template.ParseFS

WBOY
WBOYavant
2024-02-13 08:57:08637parcourir

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

L'éditeur PHP Xiaoxin vous propose un guide sur la façon d'utiliser la fonction template.ParseFS pour analyser le modèle embed.FS. Lors du développement de projets à l'aide du langage Go, nous utilisons souvent le package embed pour intégrer des fichiers statiques, et la fonction template.ParseFS peut nous aider à analyser ces fichiers modèles intégrés. Cet article présentera en détail comment utiliser la fonction template.ParseFS pour vous aider à traiter les fichiers modèles de manière plus flexible pendant le processus de développement et à améliorer l'efficacité du développement du projet. Nous allons jeter un coup d'oeil!

Contenu de la question

Je souhaite analyser tous les modèles dans la même template.Template structure mais je ne sais pas comment et cela me donne également une erreur. J'ai le code suivant :

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)
}

Donnez-moi la ParseFS erreur de méthode suivante :

$ 2023/09/16 23:36:42 template: pattern matches no files: `**/*.html`

Je pense que l'erreur est dans le paramètre patterns de la méthode ParseFS 方法的 patterns, je ne sais pas.

Je suis dans internal/web/views 目录中有很多 html 文件,实际上该文件夹中的所有文件都是 html 文件,每个文件都有一个或多个 {{define}} type de modèle. p>

Toute aide serait grandement appréciée, merci

Workaround

@Charlie-Tumahai attribue cette documentation (site officiel de Go Package) à lui Modèles globaux dans Go

Donc, afin d'analyser tous les modèles dans la même template.Template structure, je dois procéder comme suit :

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)
}

Ce que j'ai fait, c'est d'examiner davantage le modèle Glob et d'apprendre à l'utiliser dans Go, le modèle Glob dans Go est créé différemment de n'importe quelle autre langue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer