我如何逃离&x201C;{{”;和“;}”;Go模板中的分隔符?

我如何逃离&x201C;{{”;和“;}”;Go模板中的分隔符?,go,go-templates,Go,Go Templates,我使用AngularJS作为前端JS库,在Revel框架中使用Go模板在后端生成标记 但是Go和Angular在模板中都使用{{和}作为分隔符。如何在Go中将它们传递给AngularJS中转义?我不知道如何转义,但您可以使用以下方法选择不同的分隔符: 根据调查,这可能是最好的选择。争论的焦点是,如果您逃避它,您的模板将很难读取,因此无论如何,更改分隔符可能比尝试绕过它要好 {{"{{"}} {{"}}"}} 产生 {{ }} 在Revel中,有一种处理方法: 在/conf/app.conf中

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


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

我不知道如何转义,但您可以使用以下方法选择不同的分隔符:

根据调查,这可能是最好的选择。争论的焦点是,如果您逃避它,您的模板将很难读取,因此无论如何,更改分隔符可能比尝试绕过它要好

{{"{{"}}
{{"}}"}}
产生

{{
}}

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

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

template.delimiters=“[[]]”

它将使用[[]]而不是使用默认的{{},您还可以使用:

template.delimiters=“{{}}”


因此,对于revel,它使用{{{}},对于angularJS,它使用{{}

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

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

值得一提的是,这也是一个变化。@tjameson谢谢,这也帮助我发现revel框架支持它作为配置。要将其更改为
[[/code>和
]
,它将在app.conf中被定义为
template.delimiters=“[[]]”“
@BenjaminGruenbaum伟大的信息,我不知道,但现在我想起来了,他们已经有了解决方案,这并不奇怪。谢谢。@Julien是的,因为GoLang templater非常严格,可以帮你避开角色。您必须跳转几圈才能将它们作为原始的安全字符接受。@WesAlvaro使用
html/template
的结果应该是url编码的。将
html/template
更改为
text/template
工作,请参阅@ChouW Not quite。这不是我要展示的。的[src]属性被特殊处理并对其内容进行编码。答案不是切换到不同的模板类型,这会导致其他问题。@WesAlvaro我明白了。你想提醒我们在处理HTML标签时应该小心,对吗?
{{`{{Your.Angular.Data}}`}}