下划线模板与javascript html

时间:2015-11-01 16:45:23

标签: templates underscore.js

对于我的medialibrary,我一直在使用Underscore javascript库来附加_.template函数的JSON数据。所有媒体项都是这样加载的,因此我可以稍后使用搜索功能过滤数据。这就是它的基本内容吗?

但我也将它用于其他项目,如:按钮,附件等。 当我选择媒体项时,数据是在javascript中动态创建的。单击“插入”按钮后,“下划线”会附加小片段。

这有点多吗?那么我应该在javascript中使用HTML字符串吗?现在我有7个Underscore模板,这些模板只是用户操作的小片段,而不是真正需要Underscore模板....

1 个答案:

答案 0 :(得分:0)

我是模板的忠实粉丝(下划线/胡子等等),所以我可能会有点偏见。你的另一种选择是拥有一个js字符串,然后将东西附加到它上面,这非常古老。或者让jquery为你构建结构,这对眼睛来说非常困难 - 至少在我看来。

对我而言总会更好:

<div class="<%= classType %>">
    <label id="<%= id %>"><%= name %></label>
    <input name="<%= name %>" id="<%= id %>" value="<%= value %>">
</div>

比这个:

var template = ['<div class="', classType, '"><label id="', id, '">', name, '</label><input name="', name, '" id="', id, '" value="', value, '"></div>'].join('')
// or god forbid!!!
var template = '<div class="' + classType + '"><label id="' + id + '">' + name + '</label>'<input name="' + name + '" id="' + id + '" value="' + value + '"></div>';

或者这个:

// please dont ever do this, i know when you write it it makes a lot
// of sense, but trust me, when you come back a month later... no it doesnt
$('<div>').addClass(classType).append(
    $('<label>').attr('id', id).html(name)
).append(
    $('<input>').attr({'name': name, 'id': id, 'value': value})
)

如果你有不止一次重复的东西我会说,当然,添加一个模板。最后两个例子的问题是你的项目将不可避免地增长,并且你会发现你自己复制并粘贴它“再一次”来满足你的事情就是“只是这一次”的要求......永远不会发生。我的整个职业生涯都受到“这将只使用一次”代码的困扰。 - 现在我只是漫无边际。

是。使用模板!可读性是足够的理由。它将节省你的SOOO很多时间调试。

相关问题