Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
550 views
in Technique[技术] by (71.8m points)

go - Golang:解析目录和子目录中的所有模板吗?(Golang: Parse all templates in directory and subdirectories?)

This is my directory structure:

(这是我的目录结构:)

app/
  template/
    layout/
      base.tmpl
    index.tmpl

template.ParseGlob("*/*.tmpl") parses index.tmpl but not base.tmpl in the layout subdirectory.

(template.ParseGlob("*/*.tmpl")解析index.tmpl但不base.tmpllayout子目录。)

Is there a way to parse all templates recursively?

(有没有办法递归解析所有模板?)

  ask by Sunny translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Not without implementing your own function to do it, I've been using something like this

(并非没有实现自己的功能才能做到这一点,我一直在使用这样的东西)

func ParseTemplates() *template.Template {
    templ := template.New("")
    err := filepath.Walk("./views", func(path string, info os.FileInfo, err error) error {
        if strings.Contains(path, ".html") {
            _, err = templ.ParseFiles(path)
            if err != nil {
                log.Println(err)
            }
        }

        return err
    })

    if err != nil {
        panic(err)
    }

    return templ
}

This will parse all your templates then you can render them by calling their names eg

(这将解析所有模板,然后您可以通过调用它们的名称来渲染它们,例如)

template.ExecuteTemplate(w, "home", nil)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...