【问题标题】:How to change the default delimiter of mustache.js?如何更改 mustache.js 的默认分隔符?
【发布时间】:2023-04-05 12:40:02
【问题描述】:

谁能告诉我如何更改 mustache.js 的默认分隔符?默认分隔符是{{var}},我想改成{|var|}

我有以下代码:

$('body').append(Mustache.render(this.template, data));

非常感谢

【问题讨论】:

标签: javascript mustache delimiter


【解决方案1】:

作为per the documentation:

设置分隔符标记以等号开头,并将标记分隔符从 {{ 和 }} 更改为自定义字符串。 考虑以下人为设计的示例:

* {{ default_tags }}
{{=<% %>=}}
* <% erb_style_tags %>
<%={{ }}=%>
* {{ default_tags_again }}

因此,对于您想要使用 {|var|} 的情况,您可以使用:

{{={| |}=}}

注意,这里是another example that changes the default delimiter to triple-mustaches

【讨论】:

  • 感谢凯西,所以我需要在代码行中添加任何内容:$('body').append(Mustache.render(this.template, data));还是我只是更新模板中的小胡子标签?我对 mustache 库如何知道我正在使用自定义分隔符感到困惑?
  • 文档和示例似乎暗示这就是您所需要的。注意上面代码中的等号;您实际上是在将每个模板标签的开始/结束设置为一个新值。它可能会检查分配的方向和当前分配的值,以检查模板标签的哪一部分要更改。有意义吗?
  • 为什么投反对票?这不再是标准方法了吗?
  • 只需在模板之前添加分隔符更改,$('body').append(Mustache.render('{{={| |}=}} ' + this.template, data)); 对我有用。
  • 我正是需要这个功能,因为我在 TeX 中使用 mustache,而且我还需要“未转义”字段,而“&”运算符在这里派上用场:可以写成代替 {{{field}}} - 使用自定义分隔符 &lt;%%&gt; 未转义字段为 &lt;% &amp; field %&gt;
【解决方案2】:

我认为一个 javascript 示例也会有所帮助。

var template = $('#template').html();
var parseTags = new Array();
parseTags.push("[[");
parseTags.push("]]");
Mustache.parse(template,parseTags);   // optional, speeds up future uses
var rendered = Mustache.render(template, {name: "<%Luke%>"});

【讨论】:

  • 请不要转储代码,也许edit你的答案,并添加一些细节如何帮助这段代码
【解决方案3】:

在 app.js 中,使用以下 sn-p 中的最后一行。前2个供参考:

// view engine setup
app.set('views', path.join(__dirname, 'views/templates'));
app.set('view engine', 'hjs');
app.locals.delimiters = '{| |}';

【讨论】:

    【解决方案4】:

    现在有一种更简洁的方法可以做到这一点,并且记录得很好。 https://github.com/janl/mustache.js/

    var customTags = [ '<%', '%>' ];
    
    Mustache.render(template, view, {}, customTags);
    //Either tell mustache to use them each time
    Mustache.render(template, view, {}, customTags);
    //Or override the tags property and Mustache knows what to do until you tell it otherwise
    Mustache.tags = customTags;
    var updateTemplate = '<small class="text-muted">Last updated <% updated_at %> by <% updated_by %></small>';
    var html = Mustache.render(updateTemplate, {updated_at:'2019-11-18 14:54:20',updated_by:'abc'});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多