Angular 部分

使用 Angular 2,和使用 Angular 1 相比,有什么优势?

  1. Angular 2 是一个平台,不仅是一种语言
  2. 更好的速度和性能
  3. 更简单的依赖注入
  4. 模块化,跨平台
  5. 具备 ES6 和 Typescript 的好处。
  6. 灵活的路由,具备延迟加载功能
  7. 更容易学习

ng-show/ng-hideng-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 指定属性进行数据绑定