Underscorejs为逻辑部分删除不需要的空格

时间:2012-11-01 01:44:41

标签: underscore.js templating

我有一个具有if / else条件的Underscore模板

问题:

下划线为逻辑部分插入不需要的空格。 满足else条件时生成的HTML的结果是

<a>NAME</a>


<a class="name" href="/kkk/213">kkkkkkkk</a>Sir

但我想要输出

<a>NAME</a><a class="name" href="/kkk/213">kkkkkkkk</a>Sir

我想删除模板中插入的换行符/空格....

有没有解决办法呢?

3 个答案:

答案 0 :(得分:4)

下划线的_.template对空白没有任何作用,因此您必须在模板中排列空白以匹配您需要的输出。像这样:

<a>NAME</a><% if(some_condition) { %> yours <% } else { %> <a class="name" href="/kkk/<%- ID %>"><%= NAME %></a> <% }%>

演示(在控制台中查看):http://jsfiddle.net/ambiguous/gbx3M/

或者更具可读性:

<a>NAME</a><%
if(some_condition) {
    %> yours <%
} else {
    %> <a class="name" href="/kkk/<%- ID %>"><%= NAME %></a> <%
} %>

演示(在控制台中查看):http://jsfiddle.net/ambiguous/xuxLQ/

如果你真的不需要标签之间的空格那么我认为你坚持这个:

<% if(some_condition) {
    %><a>NAME</a>yours<%
} else {
    %><a>NAME<a class="name" href="/kkk/<%- ID %>"><%= NAME %></a><%
} %>

并手动剥离前导/尾随空格:http://jsfiddle.net/ambiguous/LN7eU/

另一个选择是使用CSS来浮动和定位元素,以便空白变得无关紧要。

如果这些选项都不够好,那么Underscore(有意)简单和最小的模板可能不适合你。

答案 1 :(得分:1)

我还发现你可以通过调整Underscore用来评估javascript代码的正则表达式来摆脱这个不需要的空白。

_.templateSettings.evaluate = /(?:\n\s*<%|<%)([\s\S]+?)%>/g

答案 2 :(得分:1)

我通过使用tpl.js的分叉版本来成功:https://github.com/ZeeAgency/requirejs-tpl 您可以在此处找到我的版本:https://github.com/GuillaumeCisco/requirejs-tpl/

基本上我在收到数据时添加.replace(/\s\s+/g, ''),允许我默认修剪标签之间的空格。