在 Golang 中通过模板解析自定义变量

Parse Custom Variables Through Templates in Golang

我是否可以在模板文件中设置一个变量 {{$title := "Login"}} 然后将其解析为使用 {{template "header" .}} 包含的另一个文件?

我正在尝试的示例:

header.tmpl

{{define "header"}}
<title>{{.title}}</title>
{{end}}

login.tmpl

{{define "login"}}
<html>
    <head>
        {{$title := "Login"}}
        {{template "header" .}}
    </head>
    <body>
        Login Body!
    </body>
</html>
{{end}}

如何解析我通过 header 模板创建的自定义 $title 变量?

不,不可能将变量解析到另一个文件。

根据this

A variable's scope extends to the "end" action of the control structure ("if", "with", or "range") in which it is declared, or to the end of the template if there is no such control structure. A template invocation does not inherit variables from the point of its invocation.

正如@zzn 所说,不可能从一个模板中引用另一个模板中的变量。

实现您想要的目标的一种方法是定义一个模板——它将从一个模板传递到另一个模板。

header.html {{define "header"}} <title>{{template "title"}}</title> {{end}}

login.html {{define "title"}}Login{{end}} {{define "login"}} <html> <head> {{template "header" .}} </head> <body> Login Body! </body> </html> {{end}}

您还可以在调用 "header" 模板({{template header $title}} 甚至 {{template header "index"}})时将标题作为管道传递,但这会阻止您将任何其他内容传递给那个模板。