Emberjs最大的性能问题是什么?

时间:2013-03-11 19:01:17

标签: performance binding ember.js

过去6个月我正在开发Emberjs组件。

当我尝试开发表组件时,我开始遇到第一个性能问题。此表中的每个单元格都是Ember.View,每个单元格都绑定到object属性。当表有6列并且我试图列出大约100个项目时,它导致浏览器冻结了一段时间。所以我发现,最好编写一个返回字符串而不是使用把手的函数,并由观察者手动处理绑定。

那么,有没有什么好的做法如何使用最少的绑定?或者如何编写绑定而不是失去很多性能。例如......不对大量数据使用绑定?

可以在页面附加多少个Ember.View对象?

感谢您的回复

2 个答案:

答案 0 :(得分:8)

我们有一个ember应用程序,可以在一个页面上显示100个复杂项目。每个项目使用开箱即用的把手绑定输出大约十几个属性。它渲染速度非常快(<100ms),并且很少花费在绑定上。

如果您发现浏览器悬挂在6列和100个项目上,那么肯定会出现其他问题。

  

那么,有没有什么好的做法如何使用最少的绑定?或者如何编写绑定而不是失去很多性能。

尝试设置Ember.LOG_BINDINGS = true以查看正在发生的事情。您绑定的属性可能具有循环依赖性或解决成本高昂。有关调试的重要提示,请参阅此帖子:

http://www.akshay.cc/blog/2013-02-22-debugging-ember-js-and-ember-data.html

  

可以在页面附加多少个Ember.View对象?

我不相信有一个具体的限制,当然这取决于浏览器。我不会考虑优化,除非有超过几千个。

查看此示例,了解如何优化ember以处理非常大的表:

http://addepar.github.com/ember-table/

答案 1 :(得分:4)

Erik Bryn最近发表了一篇关于Ember.ListView的讨论,通过重用已退出视口的列表单元格,可以大幅减少页面上的观看次数。

将此技术与group-helper结合使用可减少变形脚本标记的数量(如果您同时为多个属性建模)。此外,如果您不需要任何属性进行实时更新,请考虑使用{{unbound}}