【IT168 评论】AngularJS似乎很老了,它比Angular2长了7岁,比Vue.js长了5岁,比ReactJS长了4岁。虽然年老,但在很多项目中都可以看到AngularJS的身影。它在Github上拥有1500多位贡献者,它拥有一个强大的开源社区。尽管学习起来十分困难,但强大完善的开源社区可以帮助你解决一切困难。如果你对自己的AngularJS水平有自信,不妨做一下这份试卷,看看你还记得多少?
(答案见文末)
怎么样,你对自己的答案十分自信吗?如果你有不太确定或犹豫的地方,不妨先看一下这25道面试题再回答也不迟。这些知识点,你都全部掌握了吗?
1、angular 的数据绑定采用什么机制?详述其原理
2、angular 应用常用哪些路由库,各自的区别是什么?
3、解释AngularJS中scope的意思?
scope是指应用程序模型,它在应用程序控制器和视图之间起粘合剂的作用。scope按层次结构排列,模拟应用程序的DOM(文档对象模型)结构。 它可以查看表达式并传播事件。
4、解释AngularJS中的服务是什么?
在AngularJS中,服务是用于执行特定任务的单例对象或函数。它拥有一些业务逻辑,这些功能可以被称为控制器、指令、过滤器等。
5、解释Angular表达式是什么?解释Angular表达式和JavaScript表达式之间的关键区别是什么?
与JavaScript相同,Angular表达式也是代码片段,通常放在绑定中,例如{{expression}}
JavaScript表达式和Angular表达式之间的关键区别如下:
·Context:在Angular中,表达式是针对scope对象进行评估的,而Javascript表达式是针对全局窗口进行评估的。
·Forgiving:在Angular表达式中对undefined和null都采取了宽大处理的态度,而在Javascript中未定义的属性会生成TypeError或ReferenceError。
·无控制流程语句:循环、条件或异常不能用于Angular表达式
·筛选器:要在显示数据之前格式化数据可以使用筛选器
6、使用页面加载选项如何初始化选择框?
可以使用ng-init指令初始化页面加载选项:
·<div ng-controller = “ apps/dashboard/account ” ng-switch
On = “! ! accounts” ng-init = “ loadData ( ) ”>
7、解释什么是指令? 在AngularJS应用程序中有哪些常用指令?
指令的主要作用是引入新语法,它们就像DOM元素上的标记,附加了一个特殊行为。在任何AngularJS应用程序中,指令是最重要的组件。
一些常用指令是ng-model,ng-App,ng-bind,ng-repeat,ng-show等
8、使用AngularJS有什么好处?
AngularJS在网站开发方面有几个优点:
AngularJS支持MVC模式
可以使用AngularJS进行两种数据绑定方式
它具有每个定义的表单验证
它支持客户端服务器通信
它支持动画
9、解释Angular JS route路径问题?
Angular JS路由能够为应用程序中的不同内容创建不同的URL,针对不同内容的不同URL,用户能够将URL标记为特定内容。AngularJS中每个可标记的URL被称为路由。
在Angular JS中,一个值就是一个对象,它可以是数字、字符串或JavaScript对象。值通常用作factory,服务或控制器配置,值应该属于AngularJS模块。
向AngularJS控制器函数中注入一个值是通过添加一个与该值相同名字的参数来完成的。
10、解释AngularJS中的数据绑定是什么?
模型和视图组件之间的数据自动同步在AngularJS中称为数据绑定。数据绑定有两种方法:
经典模板系统中的数据挖掘
Angular模板中的数据绑定
11、AngularJS的哪些特点让其更好?
·注册回调:不需要注册回调,这使代码简单易于调试。
·以编程方式控制HTML DOM:使用Angular创建的所有应用程序都不需要操作DOM,尽管如果需要的话也可以完成
·向用户界面传输数据:AngularJS有助于消除几乎所有类似于验证表单、显示验证错误、返回内部模型等由于编组数据流发生的动作
·没有启动代码:使用AngularJS,用户可以使用服务轻松引导应用程序,这些服务会自动注入Guice中的应用程序,如依赖注入风格
12、解释Angular.js中的插值字符串是什么?
在Angular.js编译过程中,编译器使用插值服务匹配文本和属性,看它们是否包含嵌入表达式。插值允许基于作用域上的某个条件实时更新文本字符串
13、HTML的编译过程分为哪几步?
·使用标准浏览器API,首先将HTML解析为DOM
·通过使用$ compile()方法的调用,执行DOM编译,该方法遍历DOM并匹配指令。
·通过调用上一步所说的链接函数将模板与作用域链接起来
14、解释指令和不同的指令类型?
在编译过程中遇到特定的HTML结构时,触发一个行为或函数,这个函数被称为指令。当编译器在DOM中遇到该指令,便会执行。
不同类型的指令有:
Element 指令
Attribute 指令
CSS class 指令
Comment 指令
15、解释linking函数以及linking函数的类型?
linking将指令与范围结合起来,并生成实时视图。linking函数负责注册DOM监听器以及更新DOM。模板被克隆后,它被执行。
·Pre-linking函数:在链接子元素之前执行Pre-linking功能。它不被认为是DOM转换的安全方式。
·Post linking函数:链接子元素后执行Post linking功能。通过Post linking功能进行DOM转换是安全的
16、解释injector注射器是什么?
injector注射器是一个服务定位器,用于检索由provider定义的对象实例,实例化类型,调用方法和加载模块。每个Angular应用程序都有一个单独的injector注射器,它有助于按名称查找对象实例。
17、解释在Angular.js中link和compile函数的区别是什么?
·compile函数:用于模板DOM操作并收集所有指令。
·link函数:用于注册DOM监听器以及实例DOM操作,一旦模板被克隆就执行。
18、解释AngularJS中的factory方法是什么?
为了创建指令,使用factory方法。当编译器第一次匹配指令时,它只被调用一次。通过使用$ injector.invoke调用factory方法。
19、ngModel添加了哪些CSS类?
ngModel添加了以下CSS类以允许修改表单样式以及控件
ng- valid
ng- invalid
ng-pristine
ng-dirty
20、“Scope”有什么特点?
Scope(作用域)是angular应用程序中视图(HTML)和控制器(JavaScript)之间的纽带。
·观察者可以监听数据模型的变化
·通过系统将模型更改传播到Angular领域之外的视图中,也就是整个APP
·Scope从其父Scope继承属性,同时提供对共享模型属性的访问权限,可以嵌套以隔离应用程序组件
·Scope提供了评估表达式的上下文
21、解释什么是DI(依赖注入)以及对象或函数如何获得依赖关系?
DI或依赖注入是一种软件设计模式,它处理代码以获得其依赖关系。为了检索在模块加载时需要配置的应用程序元素,“config”操作使用依赖注入。
这些是对象用来保持依赖关系的方式
·通常使用新的操作符,可以创建依赖关系
·通过引用全局变量,可以查找依赖关系
·依赖可以传递到需要的地方
22、使用Angular.js框架的优点是什么?
使用Angular.js作为框架的优点是
·支持双向数据绑定
·支持MVC模式
·支持静态模板和Angular模板
·可以添加自定义指令
·支持REST完整服务
·支持表单验证
·支持客户端和服务器通信
·支持依赖注入
·应用动画
·事件处理程序
23、解释scope层次的概念? 一个应用程序可以有多少个scope?
每个Angular应用程序由一个根作用域组成,但可能有多个子作用域。当子控制器和一些指令创建新的子作用域时,应用程序可以有多个作用域。当新的scope被形成或创建时,它们被添加为其父scope的子scope。与DOM类似,它们也创建了一个分层结构。
24、你认为在Angular中使用jQuery好么?
25、如何取消 $timeout, 以及停止一个$watch()?
停止 $timeout我们可以用cancel:
停掉一个$watch:
自测题答案:CDABA CAABC