我想弄清楚使用KnockoutJS的最佳方式,我需要您的建议。Knockout JS和大型模型
我的视图模型包含一组“文档”,每个文档都有一组“值”。 每个“文件”呈现为使用以下模板一个单独的表:
<div data-bind="foreach: Documents">
<table data-bind="foreach: Values">
<tr data-bind="foreach: $data">
<td data-bind="attr: {colspan: Colspan}">
<label data-bind="text: Label"></label>
<br />
<span data-bind="html: Value"></span>
</td>
</tr>
</table>
</div>
一切正常,除了当视图模型是大的罚款。例如,如果视图模型的大小大约为1兆字节(并且包含80个文档,每个文档有60个值),那么在我的机器上渲染需要两分钟以上。
我想知道如果有显著提高性能......还是会更快地放弃淘汰赛,只是建立在一个服务器端的HTML,只是把它推到浏览器的方式...
渲染“仅”300kb视图模型需要接近30秒。
“文件”是由用户定义的,所以甚至有2兆字节的情况(我不知道他们为什么这样做)。
有没有人有JavaScript中的大视图模型的经验?
谢谢。那么根据你的回答,玩我的视图模型的结构将不会真的有帮助吗?我的意思是,如果我做两阶段绑定:先绑定一个空表,然后绑定该表以便用数据填充它等等? – 2012-03-20 21:35:09
另外从您的经验来看,尝试其他MVVM框架或模板引擎(如backbone,jQuery.tmpl等)还是性能几乎相同?换句话说,它是一个普通的JavaScript/Browser/Dom问题,还是仅仅是Knockout会变慢?当然,我会自己尝试至少一个其他框架,但尝试所有这些框架需要很长时间,所以我要求有经验的人给我一个建议:) – 2012-03-20 21:39:05
@Alexey Raga - 只要您在客户端进行绑定您的表现将受到浏览器的限制。如果有人使用IE8(缓慢的JavaScript引擎),而且模型非常庞大,那么需要花费数分钟才能呈现它。如果jQuery.tmpl速度提高50%,那么对于你来说,你认为“显着提高性能”你没有给出任何限制吗?... – 2012-03-21 11:30:45