Angular面试中如何准确回答关于组件生命周期钩子和依赖注入的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1842个文字,预计阅读时间需要8分钟。
本篇文章为家庭总总结分享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
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分钟。
本篇文章为家庭总总结分享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
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面试题(附答案分析)的详细内容,更多请关注自由互联其它相关文章!

