https://github.com/atian25/blog/issues/5

更快地执行digest:

  优化watch

  $scope.$watch(watchExpression, modelChangeCallback)

  不在watchExpression中做耗时的操作(dom操作),因为watchExpression在digest中可能会执行多次

  避免深度watch(第三个参数为true),巧用watchCollection

  减少watch

  当一个dom不需要时,使用ng-if把它移除,这样会把这个dom中的所有watch都移除的,而ng-show仅仅是隐藏了dom,对应的watcher会保留

  对于不会发生变化的数据,使用bindonce库来做单次绑定,避免添加watcher,以减少watcher的数量

  当不再需要的时候,手动解除watch

var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch

更少地执行digest

  可以的话使用digest而不是apply,补充$applt的源码:

function $apply(expr) {
  try {
    return $eval(expr);
  } catch(e) {
    $exceptionHandler(e);
  } finally {
    $root.$digest();
  }
}

  $setTimeout中延迟执行的代码中如果不涉及到界面更新,设置第三个参数为false,不执行apply。

dom优化

  使用track by,参考:http://www.cnblogs.com/hellohello/p/8068008.html

  要修改大量的dom,在指令的compile阶段进行

angular的优化的更多相关文章

  1. Angular前端优化思路

    简单总结接下我这边angular前端优化步骤都是满满的干货,各位客官有好的改进欢迎留言~ 1. 动静分离 项目里面前端比较占用带宽的一般都是加载静态资源,请求后台接口一般占用带宽都是1kb左右,但是在 ...

  2. angular性能优化心得

    原文出处 脏数据检查 != 轮询检查更新 谈起angular的脏检查机制(dirty-checking), 常见的误解就是认为: ng是定时轮询去检查model是否变更.其实,ng只有在指定事件触发后 ...

  3. Angular性能优化实践——巧用第三方组件和懒加载技术

    应该有很多人都抱怨过 Angular 应用的性能问题.其实,在搭建Angular项目时,通过使用打包.懒加载.变化检测策略和缓存技术,再辅助第三方组件,便可有效提升项目性能. 为了帮助开发者深入理解和 ...

  4. Angular 1 深度解析:脏数据检查与 angular 性能优化

    TL;DR 脏检查是一种模型到视图的数据映射机制,由 $apply 或 $digest 触发. 脏检查的范围是整个页面,不受区域或组件划分影响 使用尽量简单的绑定表达式提升脏检查执行速度 尽量减少页面 ...

  5. Angular4--提速--提升Angular项目的首页打开速度(包含微信登录优化)

    Angular项目的首页打开速度很慢,有时候会有几秒的加载时间.如果在手机端访问的话,怕是要等待十多秒,这对用户体验很差.下面参考http://www.cnblogs.com/feiyu159/p/8 ...

  6. Angular 的性能优化

    目录 序言 变更检查机制 性能优化原理 性能优化方案 小结 参考 序言 本文将谈一谈 Angular 的性能优化,并且主要介绍与运行时相关的优化.在谈如何优化之前,首先我们需要明确什么样的页面是存在性 ...

  7. angular input标签只能单向传递数据的问题

    angularjs input标签只能单向传递数据的问题 <ion-view title = "{{roomName}}" style = "height:90%; ...

  8. 史上最全的Angular.js 的学习资源

    Angular.js 的一些学习资源 基础 官方: http://docs.angularjs.org angularjs官方网站已被墙,可看 http://www.ngnice.com/: 官方zi ...

  9. angular常见问题总结

    本文引自:https://www.cnblogs.com/zhoulujun/p/8881414.html 这篇是对angularJS的一些疑点回顾,是对目前angularJS开发的各种常见问题的整理 ...

随机推荐

  1. SpringBoot | 启动异常 | 显示bulid success 无 error信息

    可能原因是没有添加 web 依赖,检查pom里面是否有web <dependency> <groupId>org.springframework.boot</groupI ...

  2. linux常用命令(ubuntu)

    编辑: vi [path] vim [path] :q 退出 :wq 保存退出 查看进程 ps ps -aux | grep mem 查看全部含 “mem”的进程 ps –aux  查看全部 在系统启 ...

  3. Hive_Hive的管理_web界面方式

    端口:9999启动方式: hive --service hwi &通过浏览器访问:http://<IP地址>:9999/hwi/ 执行启动命令后,报错,找不到hive-hwi-*. ...

  4. Spring+JCaptcha验证码使用示例

    1,导入jcaptcha.jar包,这里用的是1.0版本 2,编写captcha-context.xml配置文件(非必须,可在spring配置文件中直接添加): <?xml version=&q ...

  5. python开篇随记

    脚本环境,解释器处理 #!/usr/bin/env python # -*- coding:utf-8 -*- 变量 ■ 变量名只能由字母.数字和下划线组合 ■ 变量名不能以数字开头 ■ 关键字不能自 ...

  6. MySql下载地址

    因为下载mysql需要注册,很麻烦,记录下下载地址: My sql 5.1.71 http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-5.1.71-win32 ...

  7. 头部和信号栏一个颜色appcloud

    <header id="header" > <ul > <li class="active" onclick="api. ...

  8. WebForm随笔

    一般处理程序中获取页面所传的值:int id = Convert.ToInt32(context.Request["id"]); 后台获取页面所传的值:int id = Conve ...

  9. BundleConfig包含js,css失败

    今天在做mvc项目的时候,引入了bootstrap样式.但是包含css和js的时候出错了 于是我查阅资料,好多人都说后缀名前面不能包含".",于是我把min前面的".&q ...

  10. 谈谈我理解的Http缓存机制

    前几天看到老铁们分享的面经,谈到 http 缓存机制的问题,痛下决心,一口气研究个明白,分享给大家. 前端的发展越来越迅速,能做的事情越来越多,承担的责任越来越重,通过了解 http 缓存机制,可以帮 ...