我想知道是否有避免在 BackboneJS/UnderscoreJS 模板应用程序中将 JavaScript 与 HTML 混合的好方法。
我的理解是我们需要创建模板代码,看起来或多或少是这样的:
<table cellspacing='0' cellpadding='0' border='1' >
<thead>
<tr>
<th>Id</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<% _.each(items,function(item,key,list){ %>
<% var f = item.name; %>
<tr>
<td><%= key %></td>
<td class="<%= f %>"><%= item.name %></td>
</tr>
<% }); %> <!-- this is hardly readable -->
</tbody>
</table>
那,困扰我的是必须在 <% %> scriptlet 内编写 JavaScript,然后是一些 HTML,然后是一些 JavaScript,循环或 if/else 条件必须在 <% %> 内的其他地方关闭。
这样的代码与我早期的 JSP 页面(JavaServer Pages)很相似——甚至 scriptlet 也使用相同的符号——我记得这种方法经常导致维护和调试问题。这里我遇到了类似的问题——scriptlet被模板引擎转换成实际的JavaScript,这不容易分析。
有什么方法可以更好地处理模板吗?即使我尝试在后端进行尽可能多的过滤和数据准备,也总是需要一些典型的前端逻辑(例如突出显示某些内容等)?