摘要: 我们在上一期中讲 $rootscope时,看到$rootscope是依赖$prase,其实不止是$rootscope,翻看angular的源码随便翻翻就可以发现很多地方是依赖于$parse的。而$parse的源码打开一看,它的代码量有接近两千行。翻开angular的api文档,官方只给出了简短的解释"Converts Angular expression into a function(将一个angular的表达式转化为一个函数)",心中神兽奔腾————就这么点功能为什么要“两千行代码”呢。 阅读全文
posted @ 2015-11-17 20:37 王大鹏 阅读(3657) 评论(4) 推荐(0) 编辑
摘要: 在angular中,$scope是一个关键的服务,可以被注入到controller中,注入其他服务却只能是$rootscope。scope是一个概念,是一个类,而$rootscope和被注入到controller中的一个具体的$scope都是一个个具体的对象。$rootscope之所以被称为"root"的原因就是他是所有scope的祖先,$rootscope是在angular启动流程中建立的(上上期讲过),而被注入到controller中的$scope则是在视图创建的时候通过父辈的$scope.$new制造出来的,在视图销毁的时候,$scope会被跟着销毁。$scope是链接视图和controller的重要手段,controller则是可以与服务进行链接,将服务提供的功能进行组合,然后丢给$scope,$scope则将这些传递给视图,让它显示给用户。 阅读全文
posted @ 2015-11-16 00:49 王大鹏 阅读(10399) 评论(4) 推荐(2) 编辑
摘要: 今天做了一些图来说明angular,由于angular实在太复杂了,不知道用什么图表示比较好,所以就胡乱画了一些,希望有人能看得懂。 一、源码文件编译合并顺序图<img src="http://images2015.cnblogs.com/blog/830281/201511/830281 2015... 阅读全文
posted @ 2015-11-13 01:05 王大鹏 阅读(5442) 评论(2) 推荐(0) 编辑
摘要: 在前面,我们讲了angular的目录结构、JQLite以及依赖注入的实现,在这一期中我们将重点分析angular的整个框架的加载流程。下一期,我们讲画一张图来总结前面的流程:可以认为我们前面讲的都是angular的本身运作的框架代码,其中精妙之处甚多。 阅读全文
posted @ 2015-11-11 23:32 王大鹏 阅读(5666) 评论(0) 推荐(0) 编辑
摘要: 昨天晚上写完[angular源码分析:angular中jqLite的实现——你可以丢掉jQuery了](http://www.cnblogs.com/web2-developer/p/angular-5.html),给今天定了一个题**angular源码分析:injector.js文件,以及angular的加载流程**,但是想了想,加载流程还是放到后面统一再讲比较好。 如果你没有看过笔者的[angular源码分析:angular中的依赖注入式如何实现的](http://www.cnblogs.com/web2-developer/p/angular-2.html),可以点击看看,在其中讲过的内容,我将不会再这里重复,这一期将作那一期的补充。 阅读全文
posted @ 2015-11-10 23:39 王大鹏 阅读(2149) 评论(0) 推荐(0) 编辑
摘要: 这里可以看到,它直接调用了element.cloneNode。而在ie8下这个方法在复制H5新元素(section,footer,header,em等)时,会自动变成“:element”(即:section,:footer,:header,:em),而angular中ng-if,ng-repeat等都使用了jqLiteClone。这就会导致css选择器失败,样式就变得不堪入目了。笔者阅读了jQuery的源码,结果发现它依然是一个坑,一层h5元素的情况处理了,多层的确没有处理。并且[这个bug](http://bugs.jquery.com/ticket/6153)官方也貌似没打算修复。不得已,写了一个修复文件: ie8_ele_clone.js,并且把angular的jqLiteClone函数改了。 阅读全文
posted @ 2015-11-09 22:52 王大鹏 阅读(2555) 评论(0) 推荐(0) 编辑
摘要: 与其说计算机是发明的,不如说他是逐步进化出来。没有前人的功劳,没有图灵等科学建立起来的数理基础,或者没有电子管的发明,亦或没有后来晶体管的发明,计算机可能永远都是只一个妄想。思想文化和技术,都像生命一样,一旦开始,就会永不停息的进化下去。互联网也是一样,从一开始两台计算机想彼此亲近的冲动开始,一直到现在无所不在的网络世界,每一次变化与增长都是一次进化。 阅读全文
posted @ 2015-11-09 00:30 王大鹏 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 有朋友说,读angular源码,直接看编译后的,多好,不用管模块间的关系,从上往下读就好了。但是在我看来,阅读编译后的源码至少有两点不好。 1.编译已经将所有的代码合并在一起了,这会丢失掉作者模块设计的思想,不利于理解代码架构的精髓,甚至想理解代码都很难。 2.编译合并后的angular代码有2万多行,想要看完,早已望而生畏。相反阅读编译前的代码,可以一个模块一个模块的逐个击破。 但是编译前的源码中的确文件一大堆,一开始靠不清楚都是拿来干嘛的,这可能是初学者源代码阅读一个很大的障碍。我今天要做的事就是把angular的angular的目录和文件的结构理清分享给大家。 阅读全文
posted @ 2015-11-07 00:34 王大鹏 阅读(4878) 评论(0) 推荐(0) 编辑
摘要: 本文分析了angular的一些工具函数(比如equals,copy和各种类型判断函数)的源代码,其中总结了一些js代码编写的小技巧,希望能给读者带来收获。笔者在书写js函数时,其中对入参的检查,感到相当困惑,不知道到底是否改写,写的话是浪费墨水增加js文件的大小并且掉入一种无休止的重复劳动,而不写的话又感觉代码的健壮性不好,会给函数的调用者造成麻烦。借鉴了angular源码中的各种处理方式,获得了一定收获。 阅读全文
posted @ 2015-11-06 01:47 王大鹏 阅读(2840) 评论(0) 推荐(1) 编辑
摘要: 依赖注入和控制反转差不多是一个概念,是编程中一种重要的解耦手段。依赖注入不是目的,它是一系列工具和手段,最终的目的是帮助我们开发出松散耦合、可维护、可测试的代码和程序。 阅读全文
posted @ 2015-11-05 00:24 王大鹏 阅读(3673) 评论(0) 推荐(0) 编辑