更新
显然,jQuery 模板可以被编译,并且它有助于显示带有 if 语句 的模板的性能 here .
但是如图here ,预编译的 jQuery 模板对我的情况没有多大作用,因为我的模板不包含逻辑 block 。
对于那些建议使用其他模板引擎的人,理想情况下我只想使用 jQuery 模板,因为团队中的每个人都知道 jQuery。还有this比较几个模板引擎的测试用例。
<小时/>嗨,
就在今天,我被告知使用 jQuery 模板存在性能问题。
为了进行比较,我使用了 jQuery 模板和良好的旧字符串追加方法来向表中添加行。结果可见here 。与字符串追加方法相比,使用 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>
数据:
<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>
谢谢
气
最佳答案
陈志,
这个问题有点晚了。我发现先编译模板,然后通过字符串 Id(在下面的情况下,命名变量 templateAlias
)引用它们实际上比通过对象路由快 10 倍。以下是实现这一目标的方法(基于您的代码示例):
var templateAlias = 'tmplRow';
// compile the template
$.template(templateAlias, $("#tmplRow"));
<script type="text/javascript">
$.tmpl(templateAlias, data).appendTo('#table');
</script>
这应该会显着加快处理速度,因为模板将被编译,并且不会在每次运行 .appendTo()
函数时使用整个对象模型。使用 $('#tmplRow').tmpl(data).appendTo('#table');
意味着 $('#tmplRow')
查询 DOM,而, $.tmpl(templateAlias, data).appendTo('#table');
仅根据对模板的引用添加到 DOM。关于这个主题有很多读物。
这里是一个可能有帮助的链接:
http://boedesign.com/misc/presentation-jquery-tmpl/#13
希望这有帮助,祝你好运......
关于jquery - 提高 jQuery 模板性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608371/