如何在Go模板中转义“{{”和“}}”分隔符?

huangapple go评论95阅读模式
英文:

How do I escape “{{” and “}}” delimiters in Go templates?

问题

我正在使用AngularJS作为前端JS库,使用Revel框架中的Go模板来生成后端的标记。

但是Go和Angular都使用{{}}作为模板中的分隔符。我该如何在Go中转义它们以传递给AngularJS?

英文:

I’m using AngularJS as the front-end JS library, with Go templates within Revel framework to to generate the markup on the back-end.

But both Go and Angular use {{ and }} for delimiters in their templates. How can I escape them in Go to pass them to AngularJS?

答案1

得分: 109

{{
{{
}}

英文:
{{"{{"}}
{{"}}"}}

produces

{{
}}

答案2

得分: 62

一个简单的解决方法是使用

{{`{{你的.Angular.数据}}`}}
英文:

A simple workaround would be using

{{`{{Your.Angular.Data}}`}}

答案3

得分: 34

我不知道如何转义它,但是你可以选择使用Delims来选择一个不同的分隔符:

func (t *Template) Delims(left, right string) *Template

根据邮件列表的说法,这可能是最好的选择。论点是,如果你转义它,你的模板将很难阅读,所以最好改变分隔符,而不是试图绕过它。

英文:

I don't know how to escape it, but you could choose a different delimiter instead using Delims:

func (t *Template) Delims(left, right string) *Template

According to the mailing list, this is probably the best option. The argument was that if you escape it, your templates will be hard to read, so it would probably be better anyway to change the delimiter instead of trying to hack around it.

答案4

得分: -4

在Revel中,有一种处理方法:

在/conf/app.conf中,添加以下行:

template.delimiters="[[ ]]"

这将使用[[]]而不是默认的{{}},你也可以使用:

template.delimiters="{{{ }}}"

所以,对于Revel,它使用{{{ }}},对于AngularJS,它使用{{ }}。

英文:

In Revel, there is a way to handle it:

In /conf/app.conf, add this line:

template.delimiters="[[ ]]"

It will use [[]] instead of using default {{}}, you can also use:

template.delimiters="{{{ }}}"

So, for revel, it uses {{{ }}}, for angularJS, it uses {{ }}

huangapple
  • 本文由 发表于 2013年7月15日 01:37:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/17641887.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定