在golang中执行没有引号的模板

时间:2014-08-05 03:56:56

标签: go template-engine

我想使用noescape执行模板并且没有引号,但现在不支持noescape

是否有任何建议或我是否必须使用其他模板引擎?谢谢!

此处代码:http://play.golang.org/p/R-Ib5H9bXx

2 个答案:

答案 0 :(得分:2)

我们鼓励您在 template.JS 类型中存储安全的Javascript:

  

输入JS字符串

     

JS封装了一个已知的安全EcmaScript5表达式,   例如,(x + y * z())。模板作者负责   确保键入的表达式不会破坏预期的优先级   通过时没有语句/表达模糊   表达式如“{foo:bar()} \ n'foo'”,这两者都是有效的   表达式和有效程序具有非常不同的含义。

因此,您需要对代码进行的唯一更改是:

type Var struct {
    Name  template.JS
    Value template.JS
}

答案 1 :(得分:0)

@ANisus答案中的一小部分。还有一个类似的HTML(和CSS)包装器。每当您尝试将HTML字符串传递到模板中时,它都会被引用。因此,为了正确呈现安全的HTML,请使用:

yourHTML := "<strong>Hi!</strong>"
yourWrappedHTML := template.HTML(yourHTML)
// pass the later into your template