如何更改 Mustache.js 中的非转义 HTML 分隔符

问题描述 投票:0回答:2

我知道我可以使用

Mustache.tags('[[', ']]');

更改默认分隔符

我深入研究了源代码,但找不到并弄清楚如何更改非转义 HTML 分隔符,默认情况下为

{{{ }}}
。如有任何帮助,我们将不胜感激。

javascript mustache
2个回答
5
投票

我相信您的问题是,当您指定了自定义分隔符时,如何关闭 Mustache 模板的默认 html 实体转义行为。这可能有点令人困惑,因为默认行为(如果您查找的话就会看到)是使用三重大括号,例如

{{{some-value}}}
。我假设您的意思是从用户的角度而不是开发人员的角度 - 尽管参考了源代码。

有两种方法:

  1. Mustache 提供了另一种语法,用于使用

    &
    字符关闭 HTML 转义。因此,使用自定义分隔符“[[”和“]]”,您可以将占位符指定为

     [[&some-value]]
    
  2. 只需在自定义分隔符中使用“{ }”即可。例如

     [[{some-value}]]
    

我不相信有任何方法可以改变这些内部语法。一些模板系统更加灵活(例如 doT 使用正则表达式进行所有匹配),但 Mustache 不太灵活(许多人会认为这是一个优势)

希望事情能够澄清。我知道这是一个老问题,但也许这仍然可能 帮助您或其他也在查找此内容的人。


1
投票

更改

don't-escape
HTML 分隔符只能通过修改源代码来实现,因为它被硬编码到解析器中并定义为
openingTag + "{" and "}" + closingTag

通过硬编码,我的意思是你可能必须改变逻辑,而不仅仅是一个(几个)正则表达式。感谢@Thomas 为我奉献了时间。

© www.soinside.com 2019 - 2024. All rights reserved.