小胡子和树枝:没有逃脱 HTML

Mustache and Twig: not escaping HTML

我结合了 Twig 和 Mustache。因为他们都使用相同的书签标签

{{ var }}

我更改了 Mustache 标签,像这样

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

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

${ var }

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

{{{ do_not_escape_this_var }}}

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

我知道我可以覆盖 Twig 的书签,但这对前端团队不利,因为他们习惯了 Twig 默认标签。

有什么解决办法吗?谢谢

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 代码会非常混乱。