【问题标题】:Mustache and Twig: not escaping HTML小胡子和树枝:不转义 HTML
【发布时间】:2018-01-11 08:44:35
【问题描述】:

我把 Twig 和 Mustache 结合在一起了。因为它们都使用相同的书签标签

{{ var }}

我改变了 Mustache 标签,像这样

Mustache.parse(template, ['${', '}']);

所以我在 Mustache 中使用了这个书签

${ var }

并且没有冲突。 当我需要告诉 Mustache 不要转义 HTML 时,问题就出现了。正如Documentation 所说,我要使用

{{{ do_not_escape_this_var }}}

但这会导致与 Twig 发生冲突!而且好像没有办法自定义。

我知道我可以覆盖 Twig 的书签,但这对于习惯于 Twig 默认标签的前端团队来说是不利的。

有什么解决办法吗?谢谢

【问题讨论】:

标签: twig mustache


【解决方案1】:

就像Twig's documentation 所说,代码可以这样转义:

{{ '{{{ do_not_escape_this_var }}}' }}

对于较大的代码块,您可以使用verbatim 来防止 Twig 将 Mustache 代码解析为 Twig 代码:

{% verbatim %}
    {{{ do_not_escape_this_var }}}
{% endverbatim %}

通过逐字记录,您还可以避免使用默认的 Mustache 标签解析 Mustache 代码块:

{% verbatim %}
    <h1>Hello {{ name }}!</h1>
    <p>How are you {{ today }}?</p>
    {{! This is just Mustache, not Twig }}
{% endverbatim %}

当然,那么您不能在{% verbatim %}{% endverbatim %} 之间使用Twig。我认为这不是问题,因为混合 Mustache(使用默认标签)和 Twig 代码会非常混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多