Angular 部分
使用 Angular 2,和使用 Angular 1 相比,有什么优势?
- Angular 2 是一个平台,不仅是一种语言
- 更好的速度和性能
- 更简单的依赖注入
- 模块化,跨平台
- 具备 ES6 和 Typescript 的好处。
- 灵活的路由,具备延迟加载功能
- 更容易学习
ng-show/ng-hide
与ng-if
的区别?
我们都知道 ng-show/ng-hide 实际上是通过display
来进行隐藏和显示的。而 ng-if 实际上控制 dom 节点的增删除来实现的。因此如果我们是根据不同的条件来进行 dom 节点的加载的话,那么 ng-if 的性能好过 ng-show.
$rootScrope
以及和$scope
的区别?
解释下什么是通俗的说$rootScrope
页面所有$scope
的父亲
。
我们来看下如何产生$rootScope
和$scope
吧。
step1:Angular 解析ng-app
然后在内存中创建$rootScope
。
step2:angular 回继续解析,找到{{}}
表达式,并解析成变量。
step3:接着会解析带有ng-controller
的 div 然后指向到某个 controller 函数。这个时候在这个 controller 函数变成一个$scope 对象实例。
{yourModel}
是如何工作的?
表达式它依赖于 $interpolation 服务,在初始化页面 html 后,它会找到这些表达式,并且进行标记,于是每遇见一个{{}}
,则会设置一个$watch
。而$interpolation
会返回一个带有上下文参数的函数,最后该函数执行,则算是表达式$parse
到那个作用域上。
Angular 中的 digest 周期是什么?
每个 digest 周期中,angular 总会对比 scope 上 model 的值,一般 digest 周期都是自动触发的,我们也可以使用$apply 进行手动触发。
列出至少三种实现不同模块之间通信方式?
Service
events,指定绑定的事件
使用 $rootScope
controller 之间直接使用
$parent
,$$childHead
等directive 指定属性进行数据绑定