【问题标题】:How does one use a literal {{ in a Mustache template?如何在 Mustache 模板中使用文字 {{?
【发布时间】:2012-06-14 23:52:08
【问题描述】:

如何在 Mustache 模板中使用文字“{{”?

附带说明,如果我使用自定义标签,如<%%>,有没有办法写“

理论上,我可以使用不同的标签,但我使用{{}} 编写的代码太多,无法全部更改。

【问题讨论】:

    标签: escaping mustache


    【解决方案1】:

    只需临时更改分隔符:

    {{=<% %>=}}
    {{Look at the curlies!}}
    <%={{ }}=%>
    

    【讨论】:

      【解决方案2】:

      假设您正在输出 HTML,您可以使用 HTML 实体来避免它(mustache 没有任何方法可以转义内置的开始标记)。

      所以要输出{{,你应该写&amp;#123;{
      要输出&amp;lt;%,你可以写&amp;lt;%

      【讨论】:

      • @MindVirus 就像我说的,Mustache 没有任何方法可以逃避内置的开始标签。不过有一些解决方法。就像更改定界符,输出符号,然后将定界符改回来一样。可能有更好的解决方法,具体取决于您输出的内容,就像 HTML 一样。
      • &amp;#125;}
      【解决方案3】:

      您可以很容易地单独使用{{。如果您尝试记录 {{example}} 之类的内容,您始终可以将前两个 cur 谎言与您的数据一起传递。

      orphaned curlies are easy {{ <br>
      {{curly}}example}} curlies are harder
      

      一些简单的渲染:

      var data = { 'curly' : '{{'},
          tpl = $('#curly').html(),
          html = Mustache.to_html(tpl, data);
      
      document.write(html);​
      

      结果:

      orphaned curlies are easy {{ 
      {{example}} curlies are harder
      

      这是full working jsFiddle

      【讨论】:

      • 有没有办法在不传递变量的情况下做到这一点?
      • 您有时不能告诉解析器尊重某种模式,但并非总是如此,因此需要使用变量和 HTML 实体的变通方法。
      【解决方案4】:

      您只需在模板中添加一对花括号即可实现结果,
      例如:数据:const data = {"charsToBeEscaped": "&lt;%"} 模板:a special char like that is perfectly rendered! {{{charsToBeEscaped}}},它生成:is perfectly rendered! &lt;%

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-07
        相关资源
        最近更新 更多