Angular面试题
1. ng-show/ng-hide 与 ng-if的区别?
我们都知道ng-show/ng-hide实际上是通过display来进行隐藏和显示的。而ng-if实际上控制dom节点的增删除来实现的。因此如果我们是根据不同的条件来进行dom节点的加载的话,那么ng-if的性能好过ng-show. 这是因为多余的节点和里面的img图片都完全不需要加载。
2.解释下什么是rootScrope以及和scope的区别?
通俗的说rootScrope页面所有scope的父亲。
我们来看下如何产生rootScope和scope吧。
step1:Angular解析ng-app然后在内存中创建$rootScope。
step2:angular回继续解析,找到{{}}表达式,并解析成变量。
step3:接着会解析带有ng-controller的div然后指向到某个controller函数。这个时候在这个controller函数变成一个$scope对象实例。
3. 表达式 {{yourModel}}是如何工作的?
它依赖于 interpolation服务,在初始化页面html后,它会找到这些表达式,并且进行标记,于是每遇见一个,则会设置一个watch。而interpolation会返回一个带有上下文参数的函数,最后该函数执行,则算是表达式parse到那个作用域上。
4. Angular中的digest周期是什么?
每个digest周期中,angular总会对比scope上model的值,一般digest周期都是自动触发的,我们也可以使用$apply进行手动触发。
5. 如何取消 timeout,以及停止一个watch()?
|
var customTimeout = $timeout(function () { // your code }, 1000); $timeout.cancel(customTimeout); |
|
// .$watch() 会返回一个停止注册的函数 function that we store to a variable var deregisterWatchFn = $rootScope.$watch(‘someGloballyAvailableProperty’, function if (newVal) { // we invoke that deregistration function, to disable the watch deregisterWatchFn(); ... } }); |
6. Angular Directive中restrict 中分别可以怎样设置?scope中@,=,&有什么区别?
A匹配属性
E匹配标签
C匹配class
M 匹配注释
当然你可以设置多个值比如AEC,进行多个匹配。
在scope中,@,=,&在进行值绑定时分别表示
@获取一个设置的字符串,它可以自己设置的也可以使用{{yourModel}}进行绑定的;
= 双向绑定,绑定scope上的一些属性;
& 用于执行父级scope上的一些表达式,常见我们设置一些需要执行的函数
7. 列出至少三种实现不同模块之间通信方式?
Service、Factory服务
events,指定绑定的事件
使用 $rootScope
controller之间直接使用parent,$childHead等
directive 指定属性进行数据绑定
8. 有哪些措施可以改善Angular 性能
官方提倡的,关闭debug,$compileProvider。
myApp.config(function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
});
使用一次绑定表达式即{{::yourModel}}
减少watcher数量
在无限滚动加载中避免使用ng-repeat,关于解决方法可以参考这篇文章
使用性能测试的小工具去挖掘你的angular性能问题,我们可以使用简单的console.time()也可以借助开发者工具以及Batarang
console.time("TimerName");
//your code
console.timeEnd("TimerName");
9. 你认为在Angular中使用jQuery好么?
如果业务需求,而对于一个新人(比较熟悉jQuery)的话,或许你引入jQuery可以让它在解决问题,比如使用插件上有更多的选择,当然这是通过影响代码组织来提高工作效率,随着对于angular理解的深入,在重构时会逐渐摒弃掉当初引入jquery时的一些代码。(
Angular面试题的更多相关文章
- Angular面试题四
二十.angular 的缺点有哪些? 1.强约束 导致学习成本较高,对前端不友好. 但遵守 AngularJS 的约定时,生产力会很高,对 Java 程序员友好. 2.不利于 SEO 因为所有内容都是 ...
- Angular面试题三
十六.一个 angular 应用应当如何良好地分层? 目录结构的划分 1.对于小型项目,可以按照文件类型组织,比如: css Js { controllers models services ...
- Angular面试题二
十一.ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决? 会提示 Duplicates in a repeater are not allowed. 加 track by ...
- Angular面试题一
一.ng-show/ng-hide 与 ng-if的区别? 第一点区别是, ng-if 在后面表达式为 true 的时候才创建这个 dom 节点, ng-show 是初始时就创建了,用 display ...
- 使用angular/react/vue实现相同的面试题组件
面试题要求如下所示 1.angular: <!DOCTYPE html><html lang="en"><head> <meta char ...
- Angular的面试题
1.Aangular中组件之间通信的方式 答案:Props down 1.调用子组件,通过自定义属性传值 2.子组件内部通过Input来接收属性的值 Events up 1.在父组件中定义一个有参数 ...
- 【17】进大厂必须掌握的面试题-50个Angular面试
我们整理了一份主要的Angular面试问题清单,分为三部分: 角度面试问题–初学者水平 角度面试问题–中级 角度面试问题–高级 初学者水平–面试问题 1.区分Angular和AngularJS. 特征 ...
- .NET面试题系列[0] - 写在前面
.NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] - .NET框架基础知识(2) .NET面试题系列[3] - C# 基础知识(1) .NET ...
- 走进AngularJs(一)angular基本概念的认识与实战
一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维 ...
随机推荐
- 使用JSTL在页面前的空行怎么去除?
解决的方法是:在每个JSP的头上加上一段代码 <%@ page trimDirectiveWhitespaces="true" %>
- webdriver与JS操作浏览器元素
1.JQuery的选择器实例 语法 描述 $(this) 当前 HTML 元素 $("p") 所有 <p> 元素 $("p.intro") 所有 c ...
- django-forms表单验证
django生成登录随机图片验证码:http://www.cnblogs.com/wupeiqi/articles/4786251.html def insert(request): # print( ...
- Smarty 的安装
1.下载Smarty包可以从官方站点下载:http://smarty.php.net/ 2.解压缩Smarty包解压后的文件夹重命名为Smarty,放置在C:\Apache2\include下 3.修 ...
- Java -- 容器使用 Set, List, Map, Queue, Collections
1. ArrayList ArrayList<String> c = new ArrayList<String>(); c.add("hello"); c. ...
- 之前收集的一波MaterialDesign库
material https://github.com/rey5137/material MaterialDesignLibrary md控件库,可兼容到2.2. https://github.com ...
- WebForm 使用点滴。。。。
WebForm使用方式与WinForm很是相似,可控性非常高! 1.调用别的按钮事件: BtnSelect_Click(sender, e);
- 利用simhash计算文本相似度
摘自:http://www.programcreek.com/java-api-examples/index.php?source_dir=textmining-master/src/com/gta/ ...
- Python中如何从数据库把数据导入excel中
import pymysql,xlwt #1.连接mysql #2.执行sql语句 #3.获取到sql执行结果 #4.写入excel def conn_mysql(sql): conn = pymys ...
- Java进阶08 GUI
GUI(Graphical User Interface)提供了图形化的界面,允许用户以图形的方式与系统进行互动.在GUI推广之前,用户通常要以文本命令的方式来控制计算机.GUI直观的将计算机的功能呈 ...