gpt4 book ai didi

go - Framework7与Golang模板解析器的代码冲突

转载 作者:IT王子 更新时间:2023-10-29 01:44:37 24 4
gpt4 key购买 nike

这个问题已经有了答案:
How do I escape “{{” and “}}” delimiters in Go templates?
4个答案
代码语法冲突
Golang或Iris Go使用.variable name来解释变量名,或者使用来解析其他函数和代码。现在,当我在people.html页面中尝试下面的framework7代码时

{{#each people}}
<li>{{this}}</li>
{{/each}}

我得到了关于.html:26的错误:命令中出现意外的“”
预期行为
我期待着框架的JS代码被执行
实际行为
我得到了关于.html:26的错误:命令中出现了意外的“”,因为Golang正试图解析内的模板代码。
我如何才能要求golang不要解析特定语法中的任何内容,并让它为javascript处理。

最佳答案

您可以使用Template.Delims()方法更改Go模板引擎使用的熟食计。如果更改此项,它将不会与Framework7使用的熟食冲突。
示例将go template delims更改为[[]]

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}}

如果这对您来说不方便,或者您只想让Go模板引擎“未处理”某些特定操作,您也可以选择“转义”Go模板中的这些特定部分,将它们转换为仅为Framework7输出类似操作的操作。例如,要输出 {{#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}}

关于go - Framework7与Golang模板解析器的代码冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46018166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com