首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang & Martini代码块

Golang & Martini代码块
EN

Stack Overflow用户
提问于 2015-05-04 22:50:39
回答 1查看 298关注 0票数 0

我正在尝试定义将在基本模板中注入的代码块(如果它们已定义)。我不想将一个页面上需要的所有脚本都包含到另一个不需要它的页面上。

我正在使用:

代码语言:javascript
复制
"github.com/go-martini/martini"
"github.com/martini-contrib/binding"
"github.com/martini-contrib/render"

基本上,我想要做的是:

在布局上:admin.tmpl

代码语言:javascript
复制
<script src="jquery.min.js"></script>
<script src="scripts.min.js"></script>
{{ footer_extra }}

new.tmpl

代码语言:javascript
复制
{{define "footer_extra"}}
  <!-- scripts just for this page -->
  <script src="script-1.js"></script>
  <script src="script-2.js"></script>
  <script src="script-3.js"></script>
{{end}}

当我使用模板时,它似乎起作用了。

但是我注意到我不能定义多个模板,这有点破坏了我想要实现的目标。

index.tmpl

代码语言:javascript
复制
{{define "footer_extra"}}
  <!-- scripts just for this page -->
  <script src="script-1.js"></script>
  <script src="script-2.js"></script>
{{end}}

new.tmpl

代码语言:javascript
复制
{{define "footer_extra"}}
  <!-- scripts just for this page -->
  <script src="script-3.js"></script>
  <script src="script-4.js"></script>
{{end}}

layout.tmpl

代码语言:javascript
复制
<script src="main.js"></script>
{{template "footer_extra"}}

将抛出一个PANIC template: redefinition of template "footer_extra"

EN

回答 1

Stack Overflow用户

发布于 2015-05-07 08:23:12

我知道这是违反直觉的,但出于性能原因,最好将所有javascript捆绑到几个文件中,并将它们包含在每个页面中。

但是如果你仍然想这样做,有两种方法可以解决这个问题:

  1. 为另一个footer_extra指定一个不同的名称,然后在模板中显式引用它:
  2. 使页脚成为发送到模板的数据的一部分:

var buf bytes.Buffer //或ParseFiles如果您是这样阅读这些tpl := template.Must(template.New("").Parse(tpls)) //呈现页脚tpl.ExecuteTemplate(&buf,"footer_extra",nil)页脚:= buf.String() buf.Reset() //将页脚发送到主模板tpl.ExecuteTemplate(&buf,“索引”,mapstringinterface{}{ " footer ":template.HTML(页脚),// ^这使得go不会转义<&> })

那么你的模板将只有:

{{定义"page1"}} {{.Footer}} {{end}}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30033170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档