微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Knockout JS和大型模型

我想弄清楚使用KnockoutJS的最佳方法,我需要你的建议.

我的视图模型包含一组“文档”,每个文档都有一组“值”.
使用以下模板将每个“文档”呈现为单独的表:

一切都很好,除非视图模型很大.

例如,如果视图模型的大小约为1兆字节(并且包含80个文档,每个文档包含60个值),则在我的计算机上渲染需要两分多钟.

我想知道是否有一种方法可以显着提高性能…或者放弃Knockout并在服务器端构建html并将其推送到浏览器会更快…

渲染“仅”300kb视图模型需要接近30秒.

“文档”由用户定义,因此甚至有> 2兆字节的场景(我不知道他们为什么这样做).

有没有人有JavaScript大视图模型的经验?

最佳答案
根据您当前无法延迟加载(按需加载)数据的要求,您的数量非常有限.

服务器端HTML

生成HTML服务器端将是最快的方法.但即便如此,如果模型很大,也会有延迟.考虑下载一个5MB的HTML文件,这将花费你的浏览器一些时间来解析和渲染如此大的东西.

仍然使用KNOCKOUT JS

如果您仍想使用Knockout JS框架,那么我最好的建议是将每个Document放在IFRAME中.这不是真正推荐的,会给您的服务器带来额外的负担,但如果正确实施可以加快您的用户体验.

www.mysite.com/view/1

客户端浏览器最初将获得包含所有IFRAME的所有HTML,它将异步地为每个IFRAME分派请求.每个单独的Document请求将使用Knockout JS在其自己的帧中异步呈现.

为了改善用户交互,您甚至可以在IFRAME上设置加载事件. load事件可以重新调整IFRAME的大小,因此没有滚动条,或者从IFRAME中提取HTML并用提取的HTML替换IFRAME元素.

原文地址:https://www.jb51.cc/js/429553.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐