AngularJS学习笔记(五)

来源:互联网 发布:jquery动态数组 编辑:程序博客网 时间:2024/05/22 13:36

最后一部分啦~

自定义compile与link函数

  • compile函数的作用:对指令的模版进行转换 link的作用:在模型和视图之间建立关联,包括在元素上注册事件监听

    scope在链接阶段才会被绑定到元素上

    对于同一指令的多个实例,compile只会执行一次,而link对于指令的每个实例都会执行一次

    compile函数应该返回一个link函数供后续处理

    一般只要编写link函数就够了

  • 从ng-app开始,递归子层DOM结构,收集指令
  • 首先会在ng-app指令的位置创建$rootScope
  • 如果有需要,为指令生成childScope
  • childScope绑定到元素的data属性上
  • 调用每个指令自己的compile函数生成compositeLinkFn函数
  • 编译的结果是返回一个publiclinFn函数

$scope / 双向数据绑定

var $rootScope = new Scope()

绑定:一维,二维,Tree型

由于ng的$digest机制和“对象深比较”机制,ng在处理Tree型结构方面性能非常差

这一点相当有体会,第一个工作任务就是写一个tree,因为之前用的是ng的tree,如果数据量层次深的话,递归太多,性能太差。

ng内嵌表达式不支持if/for/while等控制逻辑——它的实现 $eval

一个小任务:自己实现双向数据绑定
(这个之前360特训营的时候也有相关的练习,关键点在于理解原理)

移动端几乎没有Grid,Tree等UI框架等需求

ionic 基于angularJS的——豆瓣音乐人
Web App——运行效率太差

hybridAPP最本质的改进在于使用了多个WebView实例

前端自动化测试
TDD
Unit
E2E(protractor)
其实讲到测试,的确比较少用,然后有测试团队,最后的E2E也是他们在做了。