角度 1 路绑定不影响性能

Angular 1 way binding not affecting performance

本文关键字:影响 性能 绑定 角度      更新时间:2023-09-26

我正在做一个严重依赖angular进行前端任务的项目。在一个列表页面上,该页面显示大约 50 个带有 ng-repeat 的条目,每个条目都有很多观察者,所以我决定使用 angular 的静态绑定减少观察者的 # 个,并且能够减少 nos。从 12K 观察者到 8K 观察者,但即使在观察者大幅减少之后,加载时间、DOM 渲染或摘要周期时间也没有改善。摘要 cyle 与 8k 观察者花费的时间几乎相同或更多,因为它与 12k 观察者相同或更多,因此似乎 angular 的 1 次绑定在这里没有帮助。我使用了chrome的角度扩展batarang和一个库ng-stats。我想到的问题是:
1) 为什么静态绑定/1 路绑定在这里不增加性能?
2)减少编号。的观察者应该减少摘要周期并加快内容加载时间吗?
3)在这种情况下,还有其他技巧可以加快速度吗?(除了资产缩小)。

如果减少 4k 的观察者数量。它只是执行 4k 检查更少。如果您可以认为它们是简单的字符串值,那么少 4 000 个字符串比较就不算什么了。

关于 ng-重复性能 :如果您没有使用它,您应该使用 Track by。跟踪方式允许您指定列表的唯一键,角度应检查该键以检测更改。

如果您有大量数据,请非常小心您放入$scope的内容,angular 将监视存储在范围内的所有内容,如果您不需要其中一些(例如内存中的一些巨大列表),则不应将它们存储到 $scope 中。当然,如果您使用 controllerAs 语法,这意味着您不应该将它们放入this

您的应用程序中可能有一些瓶颈,您应该首先专注于找到它们。

这样做的一个天真的方法只是评论/删除视图的某些部分并检查会发生什么。

另一个提示:您是否有一些代码看起来像:

$http().then(function(){
   $http().then(function(){})
});

如果是这样,请检查您是否真的需要它,或者是否可以单独加载它们。如果需要执行多个请求并等待所有结果执行分组进程,请使用$q.all([arrayOfPromise]).then(function([arrayOfResults]){})