我们已决定将ExtJS用于我们的大型应用程序的网页重制之一,我们将不得不生成屏幕/表单,我们必须以完整的可编辑网格形式呈现大约一千个或更多控件
所以我可以知道这样做的最佳方法是什么?
我已经尝试生成大约一千个控件,在客户端需要大约6秒以上,这也将取决于客户端配置,我很肯定它至少是双核系统当时。
但是本地主机上超过6秒就像是因特网上的10秒钟所以我很担心,我仍然可以选择在高负载时混合普通的html表单/控件但是它会错过ExtJS触摸(组合/数字控制等),所以任何帮助或如果你有类似的经验分享。
在上述情况下,XTemplate会更快吗?我仍然是ExtJS的新手,所以如果您知道/使用过,请分享最佳实践。
答案 0 :(得分:5)
最好的方法不是这样做。无论你如何操作,创建数以千计的控件都需要大量的内存。正如您所注意到的,这使得应用程序非常慢。
解决方案是将元素保留在服务器上并使用某种形式的分页来仅创建用户实际可以看到的元素。
当滚动条点击右/底端并加载更多行时,通过触发事件可以显式地(“加载下10行”)或隐式分页。
通常,您甚至可以向用户隐藏此内容。始终加载整行(隐藏元素在同一行中不可见,因为浏览器窗口太窄通常没有多大帮助)。
在服务器上,您将知道您有多少行。加载前20行并显示它们。找到行的高度(理想情况下,它们应该是相同的高度)并在20行下方创建一个空DIV,以扩展滚动视图。这使得显示就像所有行都在那里一样(用户看到正确的滚动条,滚动时不会跳转)。
只要该空div进入视图,就会加载更多行并缩小它。