如何在go模板中包含不同文件夹中的文件

问题描述 投票:0回答:1

例如,文件夹test.tpl中有A

{{define "test"}} hello I am test {{end}}

文件夹index.tpl中的另一个B

{{template "A/test"}} or {{template "test"}}

两者都不起作用。

go-templates
1个回答
0
投票

使用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

© www.soinside.com 2019 - 2024. All rights reserved.