如何在go模板中包含不同文件夹中的文件
How to include file which in different folder in go templates
例如文件夹 A
中有 test.tpl
:
{{define "test"}} hello I am test {{end}}
文件夹 B
中的另一个 index.tpl
:
{{template "A/test"}} or {{template "test"}}
两者都不行。
使用template.ParseFiles
并解析所有 模板。为每个使用不同的名称。这个目录布局
.
├── A
│ └── index-A.tpl
├── B
│ └── index-B.tpl
└── main.go
含A/index-A.tpl
含
A
和B/index-B.tpl
包含
B1
{{template "index-A.tpl"}}
B2
此代码使用
package main
import (
"os"
"text/template"
)
func main() {
t, err := template.ParseFiles("B/index-B.tpl", "A/index-A.tpl")
if err != nil {
panic(err)
}
err = t.Execute(os.Stdout, nil)
if err != nil {
panic(err)
}
}
将产生此输出:
B1
A
B2
请注意,两个 模板都在 templateParseFiles
中命名,并且 B/index-B.tpl
通过名称 引用 index-a.tpl
而没有路径.
例如文件夹 A
中有 test.tpl
:
{{define "test"}} hello I am test {{end}}
文件夹 B
中的另一个 index.tpl
:
{{template "A/test"}} or {{template "test"}}
两者都不行。
使用template.ParseFiles
并解析所有 模板。为每个使用不同的名称。这个目录布局
.
├── A
│ └── index-A.tpl
├── B
│ └── index-B.tpl
└── main.go
含A/index-A.tpl
含
A
和B/index-B.tpl
包含
B1
{{template "index-A.tpl"}}
B2
此代码使用
package main
import (
"os"
"text/template"
)
func main() {
t, err := template.ParseFiles("B/index-B.tpl", "A/index-A.tpl")
if err != nil {
panic(err)
}
err = t.Execute(os.Stdout, nil)
if err != nil {
panic(err)
}
}
将产生此输出:
B1
A
B2
请注意,两个 模板都在 templateParseFiles
中命名,并且 B/index-B.tpl
通过名称 引用 index-a.tpl
而没有路径.