Angular面试中如何准确回答关于组件生命周期钩子和依赖注入的问题?

2026-04-03 08:171阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1842个文字,预计阅读时间需要8分钟。

Angular面试中如何准确回答关于组件生命周期钩子和依赖注入的问题?

本篇文章为家庭总总结分享18个常见Angular面试题(附答案分析),带您梳理基础知识,增强Angular知识储备,值得收藏,快来围观吧!

1. Angular的数据绑定采用什么机制? 原理:Angular使用双向数据绑定,通过脏检查机制实现数据同步。 答案:脏检查机制

本篇文章给大家总结分享18个常见angular面试题(附答案分析)带你梳理基础知识,增强angular知识储备,值得收藏,快来看看吧!

1、angular 的数据绑定采用什么机制?详述原理

答案:脏检查机制。

解析:

双向数据绑定是 AngularJS 的核心机制之一。当 view 中有任何数据变化时,会更新到 model ,当 model 中数据有变化时,view 也会同步更新,显然,这需要一个监控。

原理就是,Angular 在 scope 模型上设置了一个监听队列,用来监听数据变化并更新 view 。每次绑定一个东西到 view 上时 AngularJS 就会往 $watch 队列里插入一条 $watch ,用来检测它监视的 model 里是否有变化的东西。当浏览器接收到可以被 angular context 处理的事件时, $digest 循环就会触发,遍历所有的 $watch ,最后更新 dom。

2、AngularJS 的数据双向绑定是怎么实现的?

答案:

1、每个双向绑定的元素都有一个 watcher

2、在某些事件发生的时候,调用 digest 脏数据检测。

这些事件有:表单元素内容变化、Ajax 请求响应、点击按钮执行的函数等。

3、脏数据检测会检测 rootscope 下所有被 watcher 的元素。

$digest 函数就是脏数据监测

3、在使用 angularjs 项目开发中 你使用过那些第三方的插件

答案:AngularUi ui-router oclazyload 等等 附上一篇文章仔细去看看 segmentfault.com/a/1190000003858219

4、ng-show/ng-hide 与 ng-if 的区别?

答案:我们都知道 ng-show/ng-hide 实际上是通过 display 来进行隐藏和显示的。而 ng-if 实际上控制 dom 节点的增删除来实现的。因此如果我们是根据不同的条件来进行 dom 节点的加载的话,那么 ng-if 的性能好过 ng-show.

5、解释下什么是r o o t S c r o p e 以 及 和 rootScrope以及和rootScrope以及和scope 的区别?

答案:通俗的说r o o t S c r o p e 页 面 所 有 rootScrope 页面所有rootScrope页面所有scope 的父亲。

解析:

我们来看下如何产生r o o t S c o p e 和 rootScope和rootScope和scope 吧。

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

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

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

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

答案:

  • Service
  • events,指定绑定的事件
  • 使用 $rootScope
  • controller 之间直接使用$parent, $$childHead 等
  • directive 指定属性进行数据绑定

7、表达式 {{yourModel}} 是如何工作的?

答案:

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

8、angular 中的$www.cnblogs.com/mliudong/p/4180680.html

compile 和 link 的区别:

编译的时候,compile 转换 dom,碰到绑定监听器的地方就先存着,有几个存几个,到最后汇总成一个 link 函数,一并执行,提升了性能。

16.angular 和 jquery 的区别

答案:

angular 是基于数据驱动,所以 angular 适合做数据操作比较繁琐的项目(这里可以再提一下单页面应用,如果你不会福利又来了 www.zhihu.com/question/20792064)

jquery 是基于 dom 驱动,jquery 适合做 dom 操作多的项目

17.对 angular 中的 form 表单了解多少

答案:

Angular 对 input 元素的 type 进行了扩展,一共提供了以下 10 种类型:

  • text

  • number

  • url

  • email

  • radio

    Angular面试中如何准确回答关于组件生命周期钩子和依赖注入的问题?

  • checkbox

  • hidden

  • button

  • submit

  • reset

Angular 为表单内置了 4 中 CSS 样式。

  • ng-valid 校验合法状态

  • ng-invalid 校验非法状态

  • ng-pristine 如果要使用原生的 form,需要设置这个值

  • ng-dirty 表单处于脏数据状态

Angular 在对表单进行自动校验的时候会校验 Model 上的属性,如果不设置 ng-model,则 Angular 无法知道 myForm.$invalid 这个值是否为真。

校验的一下内容

  • required 表示是否输入内容

  • ng-maxlength 最大长度

  • ng-minlength 最小长度

例子:传送门github.com/18500047564/clutter

18.fliter 是什么你了解的有多少?实现一个自定义 fliter

答案:

  • date(日期)

  • currency(货币)

  • limitTo(限制数组或字符串长度)

  • orderBy(排序)

  • lowercase(小写)

  • uppercase(大写)

  • number(格式化数字,加上千位分隔符,并接收参数限定小数点位数)

  • filter(处理一个数组,过滤出含有某个子串的元素)

  • json(格式化 json 对象)

filter 有两种使用方法,

一种是直接在页面里:

<p>{{now | date : ‘yyyy-MM-dd’}}</p>

另一种是在 js 里面用:

$filter(‘过滤器名称’)(需要过滤的对象, 参数 1, 参数 2,…) $filter(‘date’)(now, 'yyyy-MM-dd hh:mm:ss’);

自定义一个去重数组的

app.filter("unique", function() { return function(arr) { var n = []; var obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { n.push(arr[i]); obj[arr[i]] = 1; } } return n; }; });

更多编程相关知识,请访问:编程教学!!

以上就是18个常见angular面试题(附答案分析)的详细内容,更多请关注自由互联其它相关文章!

本文共计1842个文字,预计阅读时间需要8分钟。

Angular面试中如何准确回答关于组件生命周期钩子和依赖注入的问题?

本篇文章为家庭总总结分享18个常见Angular面试题(附答案分析),带您梳理基础知识,增强Angular知识储备,值得收藏,快来围观吧!

1. Angular的数据绑定采用什么机制? 原理:Angular使用双向数据绑定,通过脏检查机制实现数据同步。 答案:脏检查机制

本篇文章给大家总结分享18个常见angular面试题(附答案分析)带你梳理基础知识,增强angular知识储备,值得收藏,快来看看吧!

1、angular 的数据绑定采用什么机制?详述原理

答案:脏检查机制。

解析:

双向数据绑定是 AngularJS 的核心机制之一。当 view 中有任何数据变化时,会更新到 model ,当 model 中数据有变化时,view 也会同步更新,显然,这需要一个监控。

原理就是,Angular 在 scope 模型上设置了一个监听队列,用来监听数据变化并更新 view 。每次绑定一个东西到 view 上时 AngularJS 就会往 $watch 队列里插入一条 $watch ,用来检测它监视的 model 里是否有变化的东西。当浏览器接收到可以被 angular context 处理的事件时, $digest 循环就会触发,遍历所有的 $watch ,最后更新 dom。

2、AngularJS 的数据双向绑定是怎么实现的?

答案:

1、每个双向绑定的元素都有一个 watcher

2、在某些事件发生的时候,调用 digest 脏数据检测。

这些事件有:表单元素内容变化、Ajax 请求响应、点击按钮执行的函数等。

3、脏数据检测会检测 rootscope 下所有被 watcher 的元素。

$digest 函数就是脏数据监测

3、在使用 angularjs 项目开发中 你使用过那些第三方的插件

答案:AngularUi ui-router oclazyload 等等 附上一篇文章仔细去看看 segmentfault.com/a/1190000003858219

4、ng-show/ng-hide 与 ng-if 的区别?

答案:我们都知道 ng-show/ng-hide 实际上是通过 display 来进行隐藏和显示的。而 ng-if 实际上控制 dom 节点的增删除来实现的。因此如果我们是根据不同的条件来进行 dom 节点的加载的话,那么 ng-if 的性能好过 ng-show.

5、解释下什么是r o o t S c r o p e 以 及 和 rootScrope以及和rootScrope以及和scope 的区别?

答案:通俗的说r o o t S c r o p e 页 面 所 有 rootScrope 页面所有rootScrope页面所有scope 的父亲。

解析:

我们来看下如何产生r o o t S c o p e 和 rootScope和rootScope和scope 吧。

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

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

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

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

答案:

  • Service
  • events,指定绑定的事件
  • 使用 $rootScope
  • controller 之间直接使用$parent, $$childHead 等
  • directive 指定属性进行数据绑定

7、表达式 {{yourModel}} 是如何工作的?

答案:

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

8、angular 中的$www.cnblogs.com/mliudong/p/4180680.html

compile 和 link 的区别:

编译的时候,compile 转换 dom,碰到绑定监听器的地方就先存着,有几个存几个,到最后汇总成一个 link 函数,一并执行,提升了性能。

16.angular 和 jquery 的区别

答案:

angular 是基于数据驱动,所以 angular 适合做数据操作比较繁琐的项目(这里可以再提一下单页面应用,如果你不会福利又来了 www.zhihu.com/question/20792064)

jquery 是基于 dom 驱动,jquery 适合做 dom 操作多的项目

17.对 angular 中的 form 表单了解多少

答案:

Angular 对 input 元素的 type 进行了扩展,一共提供了以下 10 种类型:

  • text

  • number

  • url

  • email

  • radio

    Angular面试中如何准确回答关于组件生命周期钩子和依赖注入的问题?

  • checkbox

  • hidden

  • button

  • submit

  • reset

Angular 为表单内置了 4 中 CSS 样式。

  • ng-valid 校验合法状态

  • ng-invalid 校验非法状态

  • ng-pristine 如果要使用原生的 form,需要设置这个值

  • ng-dirty 表单处于脏数据状态

Angular 在对表单进行自动校验的时候会校验 Model 上的属性,如果不设置 ng-model,则 Angular 无法知道 myForm.$invalid 这个值是否为真。

校验的一下内容

  • required 表示是否输入内容

  • ng-maxlength 最大长度

  • ng-minlength 最小长度

例子:传送门github.com/18500047564/clutter

18.fliter 是什么你了解的有多少?实现一个自定义 fliter

答案:

  • date(日期)

  • currency(货币)

  • limitTo(限制数组或字符串长度)

  • orderBy(排序)

  • lowercase(小写)

  • uppercase(大写)

  • number(格式化数字,加上千位分隔符,并接收参数限定小数点位数)

  • filter(处理一个数组,过滤出含有某个子串的元素)

  • json(格式化 json 对象)

filter 有两种使用方法,

一种是直接在页面里:

<p>{{now | date : ‘yyyy-MM-dd’}}</p>

另一种是在 js 里面用:

$filter(‘过滤器名称’)(需要过滤的对象, 参数 1, 参数 2,…) $filter(‘date’)(now, 'yyyy-MM-dd hh:mm:ss’);

自定义一个去重数组的

app.filter("unique", function() { return function(arr) { var n = []; var obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { n.push(arr[i]); obj[arr[i]] = 1; } } return n; }; });

更多编程相关知识,请访问:编程教学!!

以上就是18个常见angular面试题(附答案分析)的详细内容,更多请关注自由互联其它相关文章!