Golang和AngularJS模板冲突

时间:2013-12-08 22:01:35

标签: angularjs go

我与golang html / template和angularjs分隔符存在冲突。我知道有一种方法可以在Go中更改分隔符,但它对我不起作用。也许应该在解析文件之前调用它?能否请您举例说明如何实施。

我发现很多评论说AngularJS和Go不应该有任何冲突,因为它们应该单独使用。据我了解,Go应仅用于后端(REST)。问题是,应该如何加载AngularJS,HTML?在这种情况下,我应该服务器吗?

7 个答案:

答案 0 :(得分:32)

您需要更改所有使用的分隔符字符。我之前在Beego遇到了同样的问题,因为确切的模板字符为{{ }},一旦我将其更改为<<<>>>,我设法毫无问题地为html提供服务。

在进行任何解析之前,您基本上需要调用此函数:func (t *Template) Delims(left, right string) *Template

了解更多详情:

  

http://golang.org/pkg/html/template/#Template.Delims

答案 1 :(得分:15)

AngularJS背后的想法是让所有渲染过程都在客户端运行。

如果您一直遵循此逻辑,那么在提供AngularJS html文件时,您不需要在服务器端进行任何渲染(例如:不调用template.Execute),您只需提供静态内容。

答案 2 :(得分:8)

这对我有用。

indexTmpl = template.New("index.html").Delims("<<", ">>")
indexTmpl, _ = indexTmpl.ParseFiles("index.html")

答案 3 :(得分:8)

不需要更改分隔符的解决方案:

使用{{"{{"}}打开,{{"}}"}}关闭角度表达式。

示例

{{"{{"}} 1 + 2 {{"}}"}}

答案 4 :(得分:5)

以下是通过设置其他人提到的分隔符来使用Golang HTML templates + Angular.js的完整示例。这个例子的原因是它显示了端到端体验,设置了静态资产的服务,模板解析以及angular.js集成。

答案 5 :(得分:2)

与Bijans的答案相似,但更具可读性。您可以在模板中使用“printf”来打印字符串文字。这与“html / template”包的效果相同。

例如:{{ printf "{{}}"}}https://golang.org/pkg/text/template/#pkg-overview

答案 6 :(得分:1)

正如亚西尔所说,你应该改变分隔符。我马丁尼[[和]]分隔符,它没有问题。