template.ParseGlob()可以解析子目录中的模板吗?

要清理模板文件夹,我想将常用模板保存在子文件夹中。目前,我具有以下文件结构:

main.go

templates/index.tpl # Main template for the main page

templates/includes/head.tpl

templates/includes/footer.tpl

head.tpl并将footer.tpl在内调用index.tpl,如下所示:

{{ template "head" . }}

<h1>My content</h1>

{{ template "footer" .}}

此外,使用解析文件template.ParseGlob()。以下是摘录main.go

var views = template.Must(template.ParseGlob("src/templates/**/*"))

func Render(rw http.ResponseWriter, temp string, data interface{}) {

err := views.ExecuteTemplate(rw, temp, data)

if err != nil {

http.Error(rw, err.Error(), http.StatusInternalServerError)

}

}

func Index(rw http.ResponseWriter, req *http.Request) {

Render(rw, "index.tpl", nil)

}

每次打开浏览器时,都会显示以下错误消息:html/template: "index.tpl" is undefined

是否有可能index.tpl被这种glob模式所忽略?我发现了类似的问题,但答案仅能解决。

回答:

不,它不能。

这里的文档非常清楚:template.ParseGlob像in中那样进行globbing

filepath.Globfilepath.Glob使用filepath.Match(https://godoc.org/path/filepath#Match)的语法,该语法没有**深度匹配。

(认真阅读文档 确实有 帮助。)

以上是 template.ParseGlob()可以解析子目录中的模板吗? 的全部内容, 来源链接: utcz.com/qa/411016.html

回到顶部