zoukankan      html  css  js  c++  java
  • angular的优化

    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阶段进行

  • 相关阅读:
    第五次作业
    第四次作业
    第三次作业
    第二次作业
    第一次作业
    实验三 算术编码压缩方法
    实验二 统计压缩方法的具体实现
    实验一 建立统计压缩方法理论模型
    第五次作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/hellohello/p/8068066.html
Copyright © 2011-2022 走看看