8

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

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

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

有多少 Ember.View 对象可以附加到页面?

感谢您的回复

4

2 回答 2

8

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

如果您发现浏览器挂在 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/

于 2013-03-11T20:50:13.303 回答
4

Erik Bryn 最近发表了一个关于Ember.ListView的演讲,该演讲将通过重用已超出视口的列表单元来大幅减少页面上的视图数量。

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

于 2013-03-12T22:21:50.333 回答