Go 为什么不';我已经解析过的HTML模板工作了吗?

Go 为什么不';我已经解析过的HTML模板工作了吗?,go,go-templates,go-html-template,Go,Go Templates,Go Html Template,我分析了我的模板文件,使我更容易工作 我把它们命名为{{define“pagearea”}。 例如{{define“footer”} 文件夹布局 footer.tmpl-页脚区域 index.tmpl-我的主页 main.go-go代码:) topheader.tmpl-顶级html的一部分 梅因,加油 footer.tmpl: {{定义“页脚”} 这是页脚区域。测试。 {{end} index.tmpl: {{template“topheader”} 主要区域 {{模板“页脚”} to

我分析了我的模板文件,使我更容易工作

我把它们命名为
{{define“pagearea”}
。 例如
{{define“footer”}

文件夹布局
  • footer.tmpl-页脚区域
  • index.tmpl-我的主页
  • main.go-go代码:)
  • topheader.tmpl-顶级html的一部分
梅因,加油 footer.tmpl:
{{定义“页脚”}
这是页脚区域。测试。
{{end}
index.tmpl:
{{template“topheader”}
主要区域
{{模板“页脚”}
topheader.tmpl:
{{define“topheader”}
{{.Sitetitle}}
{{.Sitename}

{{.sitesplanning}

{{end}
生成命令:
go Build.

我真的不知道我错过了什么。这里出了什么问题?

您曾经解析过模板文件。这将解析所有文件,并返回一个模板,该模板将“包含”所有解析的模板作为关联模板。返回的将代表第一个模板。从
模板.ParseFiles()引用

返回的模板名称将具有第一个文件的(基本)名称和(已解析)内容

然后,您使用执行您正在调用其方法的模板的。因此,在您的示例中,它将是
topheader.tmpl
,但该模板不会生成任何输出,该模板只定义了一个模板:
{{define“topheader”}

您很可能希望执行
index.tmpl
,因此请使用可以通过名称识别可执行模板的位置(不要忘记检查返回的错误):

另一个错误是,当您的
index.html
模板使用
{{template}}
操作包含(执行)其他模板时,您没有向它们传递任何参数,但您希望使用初始参数

因此,在调用其他模板时传递当前参数。您的
index.html
应该是:

{{template "topheader" .}}

<h1>
        Main area</h1>

{{template "footer" .}}
{{模板“topheader”}
主要区域
{{模板“页脚”。}
见相关问题:


它不会在模板中放置变量。例如

True:
mmmmmeeeuaawww

@SeanTolstoyevski也解决了这个问题,请参见编辑后的答案。现在一切都很好。我是新来的。我需要删除我的评论吗?@Seantoltoyevski由你决定。如果他们现在没有用,你可以。如果帖子回答了你的问题,考虑一下投票和接受。
{{define "footer"}}
<footer>

    <small>
        This is footer area. Test.</small>
</footer>
</body>
</html>
{{end}}
{{template "topheader"}}

<h1>
        Main area</h1>

{{template "footer"}}
{{define "topheader"}}
<!DOCTYPE html>
<html lang="
        {{.Sitelang}}">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>
        {{.Sitetitle}}</title>

</head>

<body>
<header>
    <h1>
            {{.Sitename}}
    </h1>
    <p>
            {{.Siteslogan}}
    </p>
</header>


{{end}}
err = homeTmpl.ExecuteTemplate(os.Stdout, "index.tmpl", data)
if err != nil {
    log.Fatal("index template execution failed:", err)
}
{{template "topheader" .}}

<h1>
        Main area</h1>

{{template "footer" .}}