当前位置: 首页 > 面试题库 >

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

方宁
2023-03-14
问题内容

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

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)的语法,该语法没有**深度匹配。

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



 类似资料:
  • 模板 ,cmf 的模板分为前台模板和后台模板,它们都位于public/themes,只是后台模板目录名会以 admin开头,前后台都支持多模板; 前台默认模板simpleboot3目录结构: 模板目录下包含所有应用视图目录,比如 portal 应用视图目录就是 simpleboot3/portal; 后台默认模板也和前台目录结构类似,它位于public/themes/admin_simpleboo

  • 模板 cmf 的模板分为前台模板和后台模板,它们都位于public/themes,只是后台模板目录名会以 admin开头,前后台都支持多模板; 前台默认模板simpleboot3目录结构: 模板目录下包含所有应用视图目录,比如 portal 应用视图目录就是 simpleboot3/portal; 后台默认模板也和前台目录结构类似,它位于public/themes/admin_simpleboot

  • 问题内容: 我不是在寻找“步行”解决方案。只想知道这是否可能。我不太理解这是什么“模式”。如果我可以得到有关ParseGlob使用的模式的解释,那也将是很好的。 问题答案: 该代码提到 说“的模式的语法是一样的” 如果名称与外壳文件名称模式匹配,则Match返回true。 Match()的实现似乎并没有区别对待’ ‘,而只是将’ ‘视为与任何非分隔符字符序列匹配。 那意味着’ ‘等价于’ ‘,这反

  • 模板解析类可以对你视图文件中的伪变量进行简单的替换,它可以解析简单的变量和变量标签对。 如果你从没使用过模板引擎,下面是个例子,伪变量名称使用大括号括起来: <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_e

  • 门户应用前台必备的模板目录结构: themes ├─simpleboot3 模板目录 │ ├─portal 门户模板目录 │ │ ├─article.html 文章内页模板 │ │ ├─article.json 文章内页模板配置文件 │ │ ├─index.html 首页模板 │ │ ├─index.json

  • 我正在尝试使用Thymeleaf模板呈现XML/JSON。我不想使用模板名称渲染视图,只想解析模板,如下所示。问题是我得到的只是模板名,而不是它的内容。 设置: 模板(src/main/resources/templates/早餐菜单.xml): 用法: 使用Thymeleaf3.0。0.BETA01。