Javascript 角度:快速渲染大量DOM元素
我在使用Angular开发的日历应用程序上工作,遇到了渲染性能问题。我看了很多关于ngRepeat渲染性能的主题,我试过BindRepeat一次,但我还是被卡住了 我创造了一个plunker来向你展示我的问题它再现了我的应用程序的逻辑 假设这是一个有5行(每周一行)的日历,每行有150个事件(我知道这是一个很大的数字,但对于非常忙碌的人来说,这很常见) 如您所见,渲染非常缓慢。这是我可以改进的吗?你有什么想法吗Javascript 角度:快速渲染大量DOM元素,javascript,angularjs,rendering,Javascript,Angularjs,Rendering,我在使用Angular开发的日历应用程序上工作,遇到了渲染性能问题。我看了很多关于ngRepeat渲染性能的主题,我试过BindRepeat一次,但我还是被卡住了 我创造了一个plunker来向你展示我的问题它再现了我的应用程序的逻辑 假设这是一个有5行(每周一行)的日历,每行有150个事件(我知道这是一个很大的数字,但对于非常忙碌的人来说,这很常见) 如您所见,渲染非常缓慢。这是我可以改进的吗?你有什么想法吗 非常感谢。我注意到每个事件的模板都使用了一些绑定。一些建议: 如果使用类似的方法可
非常感谢。我注意到每个事件的模板都使用了一些绑定。一些建议:
- 如果使用类似的方法可以加快速度,则可能值得研究
- 或者您可以在指令中手动设置每个元素的HTML,而不是使用绑定
- 在每个指令使用中都有一个异步函数getColor。这是否意味着服务器将有150*5=750个呼叫?也许值得重新思考的是架构,因为这是相当多的,而且无论角度变得多么快,都可能需要时间
- 如果这些异步调用确实是必需的/不是每次都调用服务器,那么您只能一次/或分组更改指令的所有实例中的$scope变量,例如向数组添加承诺、定期检查它以在已解析的实例上运行某些函数,或使用$q.all
事件
指令应用于所有这些元素。我的第一个想法是试着缩小你在第一页上显示的事件的数量——即使只是从用户体验的角度来看,也有很多信息要放在某人面前,仅供参考。。。如果每周只显示50个事件元素,那么整个月显示250个事件元素,我的测量结果显示渲染时间从500毫秒到100毫秒。您可以随时向用户显示某种过滤器,以帮助将2250事件简化为更易于管理的内容