Golang和AngularJS模板冲突

emv*_*ein 15 go angularjs

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

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

ymg*_*ymg 32

你需要更改所有使用的分隔符字符.我之前在Beego上遇到了同样的问题,因为它具有确切的模板字符{{ }},一旦我改变了它,<<<>>>我就设法提供了html而没有任何问题.

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

更多细节:

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


LeG*_*GEC 16

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

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

  • 这个答案基本上说你不应该混合不回答关于如何混合模板的问题的模板.确实,在大多数情况下,您不需要混合模板,但情况并非总是如此(例如,您可能正在使用作为基本模板上的条件的功能标志).问题作者知道需要使用Delims()但无法使其正常工作. (13认同)
  • 这是一个比公认的更好的答案. (3认同)

emv*_*ein 8

这对我有用.

indexTmpl = template.New("index.html").Delims("<<", ">>")
indexTmpl, _ = indexTmpl.ParseFiles("index.html")
Run Code Online (Sandbox Code Playgroud)


Bij*_*jan 8

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

使用{{"{{"}}用于打开和{{"}}"}}关闭的角度表达.

示例:

{{"{{"}} 1 + 2 {{"}}"}}
Run Code Online (Sandbox Code Playgroud)


Mat*_*tti 5

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