1. ng-show/ng-hide 与 ng-if的区别?

我们都知道ng-show/ng-hide实际上是通过display来进行隐藏和显示的。而ng-if实际上控制dom节点的增删除来实现的。因此如果我们是根据不同的条件来进行dom节点的加载的话,那么ng-if的性能好过ng-show. 这是因为多余的节点和里面的img图片都完全不需要加载。

2.解释下什么是rootScrope以及和scope的区别?

通俗的说rootScrope页面所有scope的父亲。

我们来看下如何产生rootScope和scope吧。

step1:Angular解析ng-app然后在内存中创建$rootScope。

step2:angular回继续解析,找到{{}}表达式,并解析成变量。

step3:接着会解析带有ng-controller的div然后指向到某个controller函数。这个时候在这个controller函数变成一个$scope对象实例。

3. 表达式 {{yourModel}}是如何工作的?

它依赖于 interpolation服务,在初始化页面html后,它会找到这些表达式,并且进行标记,于是每遇见一个,则会设置一个watch。而interpolation会返回一个带有上下文参数的函数,最后该函数执行,则算是表达式parse到那个作用域上。

4. Angular中的digest周期是什么?

每个digest周期中,angular总会对比scope上model的值,一般digest周期都是自动触发的,我们也可以使用$apply进行手动触发。

5. 如何取消 timeout,以及停止一个watch()?

var customTimeout = $timeout(function () {

// your code

}, 1000);

$timeout.cancel(customTimeout);

// .$watch() 会返回一个停止注册的函数

function that we store to a variable

var deregisterWatchFn = $rootScope.$watch(‘someGloballyAvailableProperty’, function
(newVal) {

if (newVal) {

// we invoke that deregistration function, to disable the watch

deregisterWatchFn();

...

}

});

6. Angular Directive中restrict 中分别可以怎样设置?scope中@,=,&有什么区别?

A匹配属性

E匹配标签

C匹配class

M 匹配注释

当然你可以设置多个值比如AEC,进行多个匹配。

在scope中,@,=,&在进行值绑定时分别表示

@获取一个设置的字符串,它可以自己设置的也可以使用{{yourModel}}进行绑定的;

= 双向绑定,绑定scope上的一些属性;

& 用于执行父级scope上的一些表达式,常见我们设置一些需要执行的函数

7. 列出至少三种实现不同模块之间通信方式?

Service、Factory服务

events,指定绑定的事件

使用 $rootScope

controller之间直接使用parent,$childHead等

directive 指定属性进行数据绑定

8. 有哪些措施可以改善Angular 性能

官方提倡的,关闭debug,$compileProvider。

myApp.config(function ($compileProvider) {

$compileProvider.debugInfoEnabled(false);

});

使用一次绑定表达式即{{::yourModel}}

减少watcher数量

在无限滚动加载中避免使用ng-repeat,关于解决方法可以参考这篇文章

使用性能测试的小工具去挖掘你的angular性能问题,我们可以使用简单的console.time()也可以借助开发者工具以及Batarang

console.time("TimerName");

//your code

console.timeEnd("TimerName");

9. 你认为在Angular中使用jQuery好么?

如果业务需求,而对于一个新人(比较熟悉jQuery)的话,或许你引入jQuery可以让它在解决问题,比如使用插件上有更多的选择,当然这是通过影响代码组织来提高工作效率,随着对于angular理解的深入,在重构时会逐渐摒弃掉当初引入jquery时的一些代码。(

最新文章

  1. phpcms二次开发中无法获取SESSION的值
  2. animate实例介绍
  3. D. Array GCD
  4. Linux配置apache等系列
  5. MySQL索引实现
  6. Python文件IO
  7. windows Server 2008 IIS7 503错误解决方案
  8. Hack 语言学习/参考---1.Hack 语言
  9. 原生态纯JavaScript 100大技巧大收集---你值得拥有
  10. 基于邮件系统的远程实时监控系统的实现 Python版
  11. OpenGL平面阴影
  12. Tomcat解决中文乱码并部署项目
  13. linux6下源码安装mysql5.6
  14. SQLServer 常见SQL笔试题之语句操作题详解
  15. python入门-函数(一)
  16. Session 共享(Custom模式)By Memcached(原创)
  17. Qt 资料大全
  18. Mybatis与Hibernate的详细对比
  19. zTree学习笔记
  20. ASP.NET 上传图片到FTP

热门文章

  1. oldboyshell编程扩展内容
  2. pinpoint改造支持查询
  3. Data Structure Array: Find if there is a subarray with 0 sum
  4. IE浏览器和CSS盒模型【转】
  5. Docker 数据管理-三种数据mount方式
  6. vim打开多个文件方式及操作
  7. Linux- 运维
  8. 从HTTP请求中获取客户IP地址
  9. java:安装tomcat8/tomcat9(简单安装配置)
  10. 学习c++的优秀博客(转)