如何在 golang 中使用不同的接口在单个网页中执行多个模板?
How to execute multiple templates in a single webpage using different interfaces in golang?
请原谅我一个看起来很奇怪的问题。我不确定如何在一个语句中准确地陈述我的问题。
我的网页中有三个模板,header、布局和页脚。
在模板 header 中,我有一个类别下拉菜单,并且在我的 go 代码中有一段包含 sub-menu 项的字符串。
Categories := []string{"Holiday","IQ","Future"}
并且模板 header 具有以下 html 代码
<div class="ui dropdown item">
<i class="browser icon"></i>
Categories
<i class="dropdown icon"></i>
<div class="menu">
{{range $i,$e:= .}}
<a class="item"><i class="hashtag icon"></i>{{$e}}</a>
{{end}}
</div>
</div>
所以当我做一个时,
t,err :=template.ParseFiles("template/header.html","template/index.html","template/footer.html")
t.ExecuteTemplate(w,"header",Categories)
它让我看起来很漂亮header但我需要做
t.ExecuteTemplate(w,"layout",Featured)
用于主页。布局模板具有以下结构
some html code
{{template "header"}}
more html code
{{template "footer"}}
一起使用两个执行模板语句给了我两个不同的 headers,很明显。
如果我从模板布局中删除模板 header,视觉输出是完美的,但是当您查看 html 代码时,菜单栏位于 "link rel" 语句上方(请记住,我在布局模板中的 {{template "header"}} 上方有 'some html code'),这显然不好。
我应该怎么做才能使用各自的结构同时执行两个模板?
我决定编辑我的 header 模板以包含它上面的所有内容,并相应地更改我的代码。我实际上在上面有一些 css 和脚本引用。因为每个页面都会有所不同,所以我只在 header 中包含了 nav_bar,但我想办法解决这个问题。
我创建了一个新结构
type Header struct{
Css []string;
Title string;
Js []string;
Categories []string;
}
这是我的 header 模板的一部分
{{range $i,$e:=.Css}}
<link rel="stylesheet" type="text/css" href="{{$e}}">
{{end}}
{{range $i,$e:=.Js}}
<script src="{{$e}}"></script>
{{end}}
我先用 header 使用相应的 header 接口执行模板部分,然后使用相应的接口执行另一个模板。我还必须从 index.html 中删除 {{template "header"}} 部分。结果现在看起来很完美,并且按照我想要的方式工作。
请原谅我一个看起来很奇怪的问题。我不确定如何在一个语句中准确地陈述我的问题。
我的网页中有三个模板,header、布局和页脚。
在模板 header 中,我有一个类别下拉菜单,并且在我的 go 代码中有一段包含 sub-menu 项的字符串。
Categories := []string{"Holiday","IQ","Future"}
并且模板 header 具有以下 html 代码
<div class="ui dropdown item">
<i class="browser icon"></i>
Categories
<i class="dropdown icon"></i>
<div class="menu">
{{range $i,$e:= .}}
<a class="item"><i class="hashtag icon"></i>{{$e}}</a>
{{end}}
</div>
</div>
所以当我做一个时,
t,err :=template.ParseFiles("template/header.html","template/index.html","template/footer.html")
t.ExecuteTemplate(w,"header",Categories)
它让我看起来很漂亮header但我需要做
t.ExecuteTemplate(w,"layout",Featured)
用于主页。布局模板具有以下结构
some html code
{{template "header"}}
more html code
{{template "footer"}}
一起使用两个执行模板语句给了我两个不同的 headers,很明显。
如果我从模板布局中删除模板 header,视觉输出是完美的,但是当您查看 html 代码时,菜单栏位于 "link rel" 语句上方(请记住,我在布局模板中的 {{template "header"}} 上方有 'some html code'),这显然不好。
我应该怎么做才能使用各自的结构同时执行两个模板?
我决定编辑我的 header 模板以包含它上面的所有内容,并相应地更改我的代码。我实际上在上面有一些 css 和脚本引用。因为每个页面都会有所不同,所以我只在 header 中包含了 nav_bar,但我想办法解决这个问题。
我创建了一个新结构
type Header struct{
Css []string;
Title string;
Js []string;
Categories []string;
}
这是我的 header 模板的一部分
{{range $i,$e:=.Css}}
<link rel="stylesheet" type="text/css" href="{{$e}}">
{{end}}
{{range $i,$e:=.Js}}
<script src="{{$e}}"></script>
{{end}}
我先用 header 使用相应的 header 接口执行模板部分,然后使用相应的接口执行另一个模板。我还必须从 index.html 中删除 {{template "header"}} 部分。结果现在看起来很完美,并且按照我想要的方式工作。