×

angular2面试题

angular2面试题(angular2中数据状态管理方案有哪些)

admin admin 发表于2023-03-21 19:11:58 浏览62 评论0

抢沙发发表评论

本文目录

angular2中数据状态管理方案有哪些


1. Change Detection
angular 使用了 ht b.com/angular/zone.js 来监视 component 的变更,并在需要的时候 render dom。由于 ng 2 的 component 的变更检测永远是从 root 开始,一直到最底层的 component 结束,大概像下图这样(图中 CD 表示 change detection):
所以在一个正常的 ng2 change detection cycle 中,不管哪一个 component 中的 ngZone 捕获到了一个异步事件的发生,就会从根 component 往下遍历,进行变更检测,直到最后一个 component。这个思路其实和 ng 1是非常类似的,只不过 ng 1的变更是双向的,也就是说在 ng 1中任意一个 directive/controller 的 $scope 在 $digest 过程中都可能会引发另一个 $scope 的变更从而让 $digest give up 掉重新再来一次。而在 ng2 的 change detection 中,子 component 如果在 change detection cycle 中有任意变更它的父 component 的行为,都会抛出异常从而终止。也就是说同样是 $digest cycle,在 ng 2 中变成了单向的可预测的:
2. 优化
由上面的部分我们可以知道,任意一次数据变更的代价是 time = C * N
C 表示平均每个绑定到模版的值变更检测所需的时间
N 表示绑定的数量。
在 ng2 中,由于框架已经自动为模版生成的代码做了非常多的优化,即使是在未使用优化过的 model 的情况下都已经可以达到 ng 1脏检测性能的 3-10 倍(同样绑定数量,同样检测次数)。视频中提到了这是因为 ng 2 在生成模版代码时,会动态生成让 js 引擎易于优化的代码,大概原理就是保持每次 check change 前后对象“形状 ”的一致。而如果在性能有瓶颈的地方,可以使用下面两种方式进行高阶优化:

前端面试题包含angularjs吗


未来的发展趋势是前端后端只靠json数据来进行通信:后端只处理和发送一段json数据到前端,然后计算和模板渲染都在前端进行。而前端的改动后,形成json数据然后传回到后端。未来趋势就是:后台程序再也不做模板的任何处理
AngularJS
的作用简单说就是就是把后台的json值直接用html进行渲染,然后html的操作又直接在形成json传回后台。
未来的后台MVC,试图不再是模板了,而是一段结构整齐标准的JSON,而这个JSON作为前台的model直接在AngularJS直接使用。
或者说后台的试图是前台的模型,而整个前台就是后台的视图。后台程序再也不做模板的任何处理了。
Angular是框架的一种,不学也能开发前端。学backbone或者ember也能开发前端。没有js的mvc,就光弄个jquery,也能开发前端。
那到底要不要学?个人觉得就是要看发展趋势。angular是否简化的前端开发,是否符合未来前端的开发趋势。以现在的js的发展程度来看,angular
是符合发展趋势的,第一,解耦前端,第二,可以模块化,第三可测试,第四天生支持json,第五依赖注入等等等,还有一些其他特性使得angular跟随甚至是推动了前端的开发趋势。
所以说angular学习是有好处的:
1.了解前端的开发趋势
2.学习MV*的设计方法
3.学习模块化编程
4.学习如何测试模块
5.使用angular简化开发流程
6.随着google的大力支持和逐渐流行,公司开始使用angular,有些岗位需要有angular的知识才能工作。

Angular2 中,动态创建组件的函数怎么理解


动态创建的控件,,可以在对话框的PreTranslateMessage里面进行响应,并执行代码或者执行自定义的响应函数。 在PreTranslateMessage中: CWnd* pBtn = GetDlgItem(1234); if(pMsg-》hwnd==pBtn.m_hWnd&&pMsg-》message

怎样理解Angular2中的ViewContainerRef,ViewRef和TemplateRef


ref可以是字符串,也可以是函数,如下:
123render(){ return 《View ref=’name’ /》//将组件view作为参数赋值给了this._view}
这样你就可以通过this.refs.name取到这个View组件。
123render(){ return 《View ref={ (e) =》 this._name = e } /》//将组件view作为参数赋值给了this._name}
可以通过this._name取到这个View组件。
接下来你就可以通过他来读写对象的变量,甚至调用对象的函数。

作为前端,我为什么选择 Angular 2


Angular 2就不同了,它的起点更高,整合了现代前端的各种先进理念,在框架、文档、工具等各个层面提供了全方位的支持。 比如它的“组件样式”能让你在无需了解CSS Module的前提下获得CSS Module的好处,它的Starter工程能让你在无需了解Webpack的 前提下获得Hot Module Replacement等先进特性,它能让你从Web Worker(你知道这是什么吗?)中获得显著的性能提升。

在angular2中如何实现点击事件当中某个div的显示和隐藏呢


可以直接使用jQuery的hide()方法来实现隐藏某个元素。工具原料:编辑器、浏览器1、实现的思路是给a标签绑定一个点击事件,然后点击事件触发后使用hide方法来隐藏指定的元素,简单的代码示例如下:内容文字点击2、运行的效果如下:点击前:点击后: