angular1性能优化

1.更新UI的时间

angular进入脏检查循环,等待所有的model都稳定后,才批量一次性更新UI,这种机制可以减少浏览器渲染的次数,从而提高性能。

2.优化$watch注册的监视器

  • 避免在监视函数中执行耗时操作,应为在每一次脏检查循环中都会被调用
  • 避免在监视函数中操作dom,console.log,因为它很耗时。
  • 使用ng-if而不是ng-show,前者会移除DOM和对应的监视器
  • 即时移除不必要的监视器,unwatch()
  • 避免深度watch,即第三个参数为true

3.apply vsdigest

  • $apply会进入脏检查循环,并从根作用域开始遍历(深度优先)检查数据变更
  • digest仅会检查该scope和它的子scope,用digest可以稍微提升性能

4.优化ng-repeat

  • 限制列表数量,使用分页和无限滚动
  • 使用track by,angular会根据对应的值判断是否对原DOM进行更新,减少不必要的渲染
  • 使用单次绑定,angular建议一个页面最多2000个双向绑定,使用单次绑定仅在第一次脏检查循环的时候改变界面元素{{::variable}}

5.慎用filter

在脏检查循环中,filter会调用多次,至少两次,避免在filter中执行耗时操作
可以在controller中预先处理:

//mainCtrl.js
angular.module('filtersPerf', []).controller('mainCtrl', function($scope, $filter){
  $scope.dataList = $filter('double')(dataFromServer);
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 不知不觉,在项目中用angular已经半年多了,踩了很多坑。 趁着放假,把angular的3本书都看了遍,结合这半...
    滚石_c2a6阅读 7,974评论 0 3
  • Angular面试题 一、ng-show/ng-hide与ng-if的区别? 第一点区别是,ng-if在后面表达式...
    w_zhuan阅读 10,903评论 0 26
  • 1、angularjs的几大特性是什么? 双向数据绑定、依赖注入、模板、指令、MVC/MVVM 2、列举几种常见的...
    2e9a10d418ab阅读 5,206评论 0 10
  • 一、背景介绍 基本概念 什么是脏数据检查(Dirty checking):Angular 是一个 MVVM 前端框...
    8778188a234f阅读 17,844评论 0 3
  • 1、angularjs的几大特性是什么? 双向数据绑定、依赖注入、模板、指令、MVC/MVVM 2、列举几种常见的...
    秀才JaneBook阅读 5,422评论 0 22

友情链接更多精彩内容