我与golang html / template和angularjs分隔符存在冲突。我知道有一种方法可以在Go中更改分隔符,但它对我不起作用。也许应该在解析文件之前调用它?能否请您举例说明如何实施。
我发现很多评论说AngularJS和Go不应该有任何冲突,因为它们应该单独使用。据我了解,Go应仅用于后端(REST)。问题是,应该如何加载AngularJS,HTML?在这种情况下,我应该服务器吗?
答案 0 :(得分:32)
您需要更改所有使用的分隔符字符。我之前在Beego遇到了同样的问题,因为确切的模板字符为{{ }}
,一旦我将其更改为<<<>>>
,我设法毫无问题地为html提供服务。
在进行任何解析之前,您基本上需要调用此函数:func (t *Template) Delims(left, right string) *Template
了解更多详情:
答案 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)
正如亚西尔所说,你应该改变分隔符。我马丁尼[[和]]分隔符,它没有问题。