代码语法冲突
Golang或Iris-go使用{{.VariableName}}来解释变量名称,或者他们使用{{}}来解析其他函数和代码。现在,当我在people.html页面中尝试使用framework7代码时
{{#each people}}
<li>{{this}}</li>
{{/each}}
我收到错误about.html:26:命令
中出现意外的“#”我期待执行框架的JS代码
我收到错误about.html:26:命令意外“#”,因为Golang正试图解析{{}}内的模板代码
如何让Golang不要解析特定语法中的任何内容,并将其用于javascript来处理它。
答案 0 :(得分:1)
您可以使用Template.Delims()
方法更改Go模板引擎使用的分隔符。如果你改变它,它就不会与framework7使用的delim碰撞。
将Go模板更改为[[
和]]
的示例:
func main() {
t := template.Must(template.New("").Delims("[[", "]]").Parse(tmpl))
if err := t.Execute(os.Stdout, "test"); err != nil {
panic(nil)
}
}
const tmpl = `[[.]]
{{#each people}}
<li>{{this}}</li>
{{/each}}`
输出(在Go Playground上试试)
test
{{#each people}}
<li>{{this}}</li>
{{/each}}
如果这对您不方便,或者您只是想要保留一些特定的操作,那就是未经处理的&#34;通过Go模板引擎,您也可以选择&#34; escape&#34; Go模板中的这些特定部分,通过将它们转换为仅为frame7输出类似操作的操作。例如,输出{{#each people}}
,在Go模板中使用:
{{"{{#each people}}"}}
一个工作示例:
func main() {
t := template.Must(template.New("").Parse(tmpl))
if err := t.Execute(os.Stdout, "test"); err != nil {
panic(nil)
}
}
const tmpl = `{{.}}
{{"{{#each people}}"}}
<li>{{"{{this}}"}}</li>
{{"{{/each}}"}}`
输出(在Go Playground上尝试):
test
{{#each people}}
<li>{{this}}</li>
{{/each}}