Update
显然,jQuery 模板可以被编译,并且它有助于提高模板的性能if 语句 shown here http://jsperf.com/complex-template-vs-concat/4.
但如图所示here http://jsperf.com/jquery-template-table-performance/5,预编译的 jQuery 模板对我的情况没有多大作用,因为我的模板不包含逻辑块。
对于那些建议使用其他模板引擎的人,理想情况下我只想使用 jQuery 模板,因为团队中的每个人都知道 jQuery。还有this http://jsperf.com/dom-vs-innerhtml-based-templating/42比较几个模板引擎的测试用例。
Hi,
就在今天,我被告知使用 jQuery 模板存在性能问题。
为了进行比较,我使用了 jQuery 模板和良好的旧字符串附加方法来将行添加到表中。结果可见here http://jsperf.com/jquery-template-table-performance。与字符串附加方法相比,使用 jQuery 模板大约慢 65%,哎呀!
我想知道可以采取哪些措施来提高 jQuery 模板脚本的性能。
完整的脚本可以在提供的链接中查看。但基本思想如下:
模板:
<script type="x-jquery-tmpl" id="tmplRow">
<tr>
<td><input type="checkbox" value="${id}" /></td>
<td>${firstName} ${lastName}</td>
<td class="edit">
<a>Edit</a>
<input style="display:none;" type="hidden" value="Blah" />
<input class="cancel" type="button" value="cancel" />
</td>
<td class="select">
<a>Select</a>
<select style="display:none;">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select>
<input class="cancel" type="button" value="cancel" />
</td>
<td>More string</td>
<td>More string</td>
<td>More string</td>
<td>More string</td>
<td>More string</td>
<td>More string</td>
</tr>
</script>
Data:
<script type="text/javascript">
var data = [];
for (var i = 0; i < 100; i++) {
var row = {
id: i,
firstName: 'john',
lastName: 'doe'
};
data.push(row);
}
</script>
HTML:
<table id="table"></table>
执行:
<script type="text/javascript">
$('#tmplRow').tmpl(data).appendTo('#table');
</script>
Thanks,
Chi