我现在已经在Angular开发了一段时间并且喜欢它。我确实理解数据绑定的性能影响,并使用bind-once插件和其他手段来减少手表等。
但是,我想知道Angular应用程序是否,如何以及何时变得显着更快?我的意思是,所有事情都是平等的,甚至与非声明性框架相同。
浏览器的问题是否赶上了声明性模型? 任何浏览器目前都有任何计划吗?
EcmaScript 6或更高版本的问题最终是否支持本地"观看"变量。 (有希望吗?)
或者这需要太长时间,Angular本身需要以一种聪明的方式改进(Angular团队的任何计划?)
当然,最终浏览器和计算机总体上会变得更快,但是Angular性能还有什么可以实现的吗?
答案 0 :(得分:1)
你问了很多if / theory问题。角度和你一样快。性能与应用程序的开发方式直接相关。我正在讨论一个有50多个控制器的项目,这些控制器存在严重的性能问题,因为我们在表中处理了100,000多条记录。我们能够通过对我们的决策很聪明,从多秒交易到60毫秒的排序和过滤器。绑定一次只是表现的一块拼图。你真的需要看看你的手表。火焰图是一个很好的工具。我在Coderwall.com上写了一篇关于它的专业提示: https://coderwall.com/p/nsanaa?i=1&p=1&q=author%3Abreck421&t%5B%5D=breck421
此外,你需要注意你的DOM操作(ng-repeat很慢)。
布莱恩福特刚刚就这个话题做了一个闪电般的谈话:https://github.com/breck421/brian-talks-about-angular-with-lots-of-data
希望这有帮助,
约旦
答案 1 :(得分:1)
我看到它的方式,关于绑定/更改侦听器等,有3个可能的优化领域:
这包括例如bindonce或特定数据结构的优化,例如$ watchGroups,它类似于一个监视两个或多个属性(https://github.com/angular/angular.js/pull/7158)。这些变化基本上都是任何人都可以实现和提出的,但它们对核心团队没有很高的优先级(尽管他们正在开发类似于bindonce的功能)。
在angularjs 2.0中,范围变化检测算法将比现在快得多(http://blog.angularjs.org/2014/03/angular-20.html)。我看到的架构的另一个重大改进是批量DOM更新。
Object.observe()是一种侦听对象更改的标准方法。它目前尚未得到所有主流浏览器的支持,因此尚无法使用。
目前最有希望的领域是(2),因为一般架构的变化将包含或过时的变化(1)。我认为角度2.0的公共角色最早可以在年底出现。