angular.js性能问题

时间:2013-01-23 17:34:36

标签: angularjs

性能选项卡上的Batarang显示,在应用程序的根目录下,angular是调用函数,如下所示: function (a){var e,f,i=a.$eval(h),m=hc(i,

根据batarang,它的速度非常缓慢,当我在应用程序上获得更多行时,它会减慢应用程序并导致Firefox崩溃(尽管Chrome仍在处理它)。那到底是做什么的?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:16)

构建Angular应用程序时需要考虑的事项,其中您正在动态扩展ngRepeat的内容。您设置的每个ngRepeat都会设置一个手表。您在重复内部执行的每个{{binding}}或ngModel都会设置另一个监视,依此类推。其中每个都创建了函数和对象实例,还需要在每个$ digest上进行处理。因此,如果您遇到性能问题,您可能需要实现一个自定义指令来写出您的数据,而无需设置那些多余的手表,因此您的性能会更高一些。我的2美分。

答案 1 :(得分:2)

所以当我问到我认为是类似问题的问题时,我偶然发现了这几个月。让我来描述我的问题和我的解决方案(不涉及指令),你可以看看它是否适用于你的。

我正在建造一张桌子。首先,我要求信息告诉我表格中有哪些行,然后我会请求填写表格单元格的更多信息。所以我得到第一个请求并将所有行添加到表中,然后请求单元格数据。我会按行获取单元格数据,但在大型表格中,这仍然会有很多请求。当我获取该行的单元格数据时,我会将其填入。

这产生了非常酷的效果,所有细胞都有旋转图标等待数据。但它真的很慢。在Chrome中,这很好,浏览器会减慢一些,但它会继续工作。但在FF中,它会让烦人的“脚本忙或没有响应”的消息。如果你单击继续它将工作正常,但如果你单击“取消”你将停止脚本,没有任何工作。

所以,这是我提出的解决方案。无需指令。我所做的只是完全构建每一行的数据,然后才将行添加到ng-repeat使用的变量中。这样它的速度要快得多。当行获取所有数据时,行填写,$ watch仍在那里,但你不是一次触发它们,你仍然可以让它们以后能够更改数据(在我的表中你可以编辑表格的每个单元格,以便以后能够轻松更改数据非常重要。)

希望这有助于某人。

相关问题