html模板vs通过js推送代码

时间:2013-11-27 13:04:51

标签: javascript html performance underscore.js

说我想动态渲染一些html。哪个更好?(除了它为代码提供了良好的结构)

<script type="text/template" id="some">
//some html code here
</script>
_.template($("#someid").html());

$("#someid").html("inserting html here");

2 个答案:

答案 0 :(得分:1)

在您提到的两种方法中,HTML标记都是作为HTML字符串生成的,然后添加到目标DOM元素中。所以,我认为它的方式没有使用一个优于另一个的性能优势。

  • 话虽如此,在您的情况下使用模板(下划线)代码 只是变得比必须生成长HTML更易于管理 通过将各种值连接在一起的字符串。

  • 此外,带有条件语句的已编译模板可以存储在变量中,并通过对模板进行一次调用(并将对象传递给它)来重用。然而,如果您需要填充HTML字符串,那么在这种情况下,您最终将在for循环或其函数编程等效$.each_.each内编写字符串连接语句以使其成为可能可重复使用的。

以下是2个小提琴,基本上使用2种方法做同样的事情:

Using Templates

Using string concatenation

比较代码并自行决定最适合您的要求。

答案 1 :(得分:0)

我会在div代码中使用隐藏的script而不是html代码,以便谷歌可以将其编入索引。

另外,我会使用.clone()方法来克隆DOM结构,而不是检索纯文本html(.html())并基于此创建新元素。但是改变模板中的值会更加棘手 - 但它可能会更快;尚未测试过。