- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
angular面试题要点
1.angularjs 是mvc还是mvvm框架首先阐述下你对mvc和mvvm的理解首先为什么我们会需要MVC?因为随着代码规模越来越大,切分职责是大势所趋,还有为了后期维护方便,修改一块功能不影响其他功能。还有为了复用,因为很多逻辑是一样的。而MVC只是手段,终极目标是模块化和复用。mvvm的优点低耦合:View可以独立于Model变化和修改,同一个ViewModel可以被多个View复用;并且可以做到View和Model的变化互不影响;可重用性:可以把一些视图的逻辑放在ViewModel,让多个View复用;独立开发:开发人员可以专注与业务逻辑和数据的开发(ViewModemvvmdi计人员可以专注于UI(View)的设计;可测试性:清晰的View分层,使得针对表现层业务逻辑的测试更容易,更简单。在angular中MVVM模式主要分为四部分:View:它专注于界面的显示和渲染,在angular中则是包含一堆声明式Directive的视图模板。ViewModel:它是View和Model的粘合体,负责View和Model的交互和协作,它负责给View提供显示的数据,以及提供了View中Command事件操作Model的途径;在angular中$scope对象充当了这个ViewModel的角色;Model:它是与应用程序的业务逻辑相关的数据的封装载体,它是业务领域的对象,Model并不关心会被如何显示或操作,所以模型也不会包含任何界面显示相关的逻辑。在web页面中,大部分Model都是来自Ajax的服务端返回数据或者是全局的配置对象;而angular中的service则是封装和处理这些与Model相关的业务逻辑的场所,这类的业务服务是可以被多个Controller或者其他service复用的领域服务。Controller:这并不是MVVM模式的核心元素,但它负责ViewModel对象的初始化,它将组合一个或者多个service来获取业务领域Model放在ViewModel对象上,使得应用界面在启动加载的时候达到一种可用的状态。mvc的界面和逻辑关联紧密,数据直接从数据库读取。mvvm的界面与viewmode是松耦合,界面数据从viewmodel中获取。所以angularjs更倾向于mvvm2.angularjs中$scope,controller,directive,sevice在mvvm中充当什么角色如果你不知道,第一题的分析以及很明确,仔细再仔细的看一遍3.在使用angularjs项目开发中你使用过那些第三方的插件AngularUi ui-router oclazyload等等附上一篇文章仔细去看看/a/11900000038582194.在angular项目中你如何控制静态资源的合理加载第三题提到了oclazyload这个插件,很好的一个懒加载静态资源的第三方插件5.再写controlloer逻辑的时候你需要注意什么?1.简化代码(这个是所有开发人员都要具备的)2.坚决不能操作dom节点这个时候可能会问为什么不能啊你的回答是:DOM操作只能出现在指令(directive)中。最不应该出现的位置就是服务(service)中。Angular倡导以测试驱动开发,在service或者controller中出现了DOM操作,那么也就意味着的测试是无法通过的。当然,这只是一点,重要的是使用Angular的其中一个好处是啥,那就是双向数据绑定,这样就能专注于处理业务逻辑,无需关系一堆堆的DOM操作。如果在Angular的代码中还到处充斥着各种DOM操作,那为什么不直接使用jquery去开发呢。测试驱动开发是什么呢?普及一下:测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。6.AngularJS的数据双向绑定是怎么实现的?1、每个双向绑定的元素都有一个watcher2、在某些事件发生的时候,调用digest脏数据检测。这些事件有:表单元素内容变化、Ajax请求响应、点击按钮执行的函数等。3、脏数据检测会检测rootscope下所有被watcher的元素。$digest函数就是脏数据监测又附上一篇原理性的文章 /xufei/Make-Your-Own-AngularJS/blob/master/01.md7.controller之间怎么通讯1、event这里可以有两种方式,一种是$scope.$emit,然后通过监听$rootScope的事件获取参数;另一种是$rootScope.$broadcast
您可能关注的文档
- 课堂新坐标2016_2017学年高中物理第2章楞次定律和自感现象第3节自感现象的应用课件.ppt
- ADAMS-技术入门与提高课件.ppt
- Agilent1100操作方法.doc
- 2.3.1 直线与平面垂直的判定与性质.ppt
- 课堂新坐标2016_2017学年高中物理第2章圆周运动2匀速圆周运动的向心力和向心加速度课件.ppt
- 2.3.1直线与平面垂直的判定(天地英豪版0).ppt
- Adobe_Photoshop_路径终极教程.ppt
- 课堂新坐标2016_2017学年高中物理第2章磁场章末分层突破课件.ppt
- AdobePremiereProCS3中文版影视编辑案例教程.ppt
- AIDS的职业暴露及其预防.ppt
文档评论(0)