jQuery源码分析系列(持续更新)

jQuery的源码有些晦涩难懂,本文分享一些我看源码的方法,每一个模块我基本按照这样的顺序去学习。

当我读到难度的书或者源码时,会和《如何阅读一本书》结合起来进行学习。推荐读读这本书,你可以从这里这里下载。

第一部分:检视阅读

1. 收集参考资料:官方文档、书籍、百度/谷歌,专题/博客等,快速的浏览,对涉及的知识点、范围、深度、是否有参考意义等有大致的了解和判断,知道这些文章的作者想要解释或解决什么问题。

第二部分:分析阅读

2. 细读官方文档,官方有非常详细的文档说明,随手打开翻译工具,不懂的单词及时查证,不要一开始就去读中文API,因为很多是机器翻译;读懂官文之后,再与中文API相互印证,加深理解。

3. 验证官方示例

打开Firebug或Chrome的调试工具,在控制台中输入命令进行验证;或者打开http://jsfiddle.net/,手动输入HTML、CSS、JavaScript;如果是AJAX,就去搭建自己的服务器和服务端程序。

到这一步,对API的功能、用法用已经初步掌握,保持这个学习习惯,可以很快成为一名jQuery熟练工。但这还是初级阶段,不过是掌握了一些知识(what)、知道了如何应用(how),还弄不清这些API的背后是如何设计和实现的(why);不过有了前边的基础准备工作,终于可以开始读源码了。

4. 开始读源码

首先把模块的结构整理出来,从整体理解,比如总体架构Event源码结构

接下来是边读边加注释,对每行代码每个函数调用都要字斟句酌吹毛求疵,觉得有趣的、惊艳的、疑问的、坑爹的、猜测、启发、联想等等,详细的把这些思考的过程和结果记录下来(放心吧jQuery值得你花时间这么做,你会体会到其中的乐趣,并很快发现这么做是有价值的);

边读边注释的过程中,设计一些测试用例,在调试工具(我发现Chrome比Firebug好用多了)中设置断点,通过单步调试来检验纠正我的理解;

最后,总结出API的实现思路关键代码,这是这一步最重要的2个成果。

我总结的经验是,自己主动努力分析,不要去看别人的分析。原因吗,比如版本问题、作者的水平和耐心等,最重要的是我发现,在读懂源码之前我经常读不懂这些文章。

第三部分:主题阅读

5. 大量阅读相关的网文和书籍(第1步收集的资料),重点阅读相同主题的分析文档,网上常问的问题等,在阅读的过程中不断修正和完善自己的理解。

同样需要不停的debug。

6. 写一篇应用教程(优秀的应用教程已经很多了,有时间也会写写,但不多)。

7. 写一篇源码分析,记录自己的心得,加深理解和记忆。

分析jQuery源码是成长为中级JSer的一条捷径,希望对大家能有所启发。

原文:http://www.cnblogs.com/nuysoft/archive/2011/12/08/2280855.html

[转] jQuery源码分析-如何做jQuery源码分析的更多相关文章

  1. jQuery 源码分析 8: 回头看jQuery的构造器(jQuery.fn,jQury.prototype,jQuery.fn.init.prototype的分析)

    在第一篇jQuery源码分析中,简单分析了jQuery对象的构造过程,里面提到了jQuery.fn.jQuery.prototype.jQuery.fn.init.prototype的关系. 从代码中 ...

  2. 【转】jQuery源码分析-03构造jQuery对象-源码结构和核心函数

    作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系 ...

  3. jQuery原型属性constructor,selector,length,jquery和原型方法size,get,toArray源码分析

    首先看一下在jQuery1.7.1中定义的原型属性和方法有哪些? init方法作为实际的构造函数已经详细分析过了,需要了解可以参考http://www.cnblogs.com/yy-hh/p/4492 ...

  4. jquery dom ready, jqery2.1.1实现-源码分析

    本文链接http://www.cnblogs.com/Bond/p/4178311.html jquery document  ready的实现其很很简,虽说简单,其很很多人还是没去关注过它的实现.我 ...

  5. jQuery源码分析-03构造jQuery对象-源码结构和核心函数

    3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构 ...

  6. jquery源码解读 (摘自jQuery源码分析系列图书(pdf)) 持续更新

    1.总体架构 1.1自调用匿名函数 //自调用匿名函数 (function(window,undefined){ //jquery code})(window); 1.这是一个自调用匿名函数.第一个括 ...

  7. jQuery1.11源码分析(9)-----初始化jQuery对象的函数和关联节点获取函数

    这篇也没什么好说的,初始化jQuery对象的函数要处理多种情况,已经被寒冬吐槽烂了.关联节点获取函数主要基于两个工具函数dir和sibling,前者基于指定的方向遍历,后者则遍历兄弟节点(真的不能合并 ...

  8. jQuery源码-dom操作之jQuery.fn.html

    写在前面 前面陆陆续续写了jQuery源码的一些分析,尽可能地想要cover里面的源码细节,结果导致进度有些缓慢.jQuery的源码本来就比较晦涩,里面还有很多为了解决兼容问题很引入的神代码,如果不g ...

  9. jQuery源码笔记(一):jQuery的整体结构

    jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类库相比,它剑走偏锋,从 web 开发的实用角度出发,抛除了其它 Lib 中一些中看但不实用 ...

随机推荐

  1. Debian8系统下,caffe的安装

    特此声明:本文不允许用于商业目的,允许转载(注明一下啦). 首先,官方的参考文献为:http://caffe.berkeleyvision.org/installation.html. 现在开始: 安 ...

  2. [css] vertical-align和line-height

    原文链接:http://www.zhangxinxu.com/wordpress/2015/08/css-deep-understand-vertical-align-and-line-height/ ...

  3. HttpURLConnection请求接口

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataOutputStream; ...

  4. OpenGL中各种坐标系的理解[转]

    OPENGL坐标系可分为:世界坐标系和当前绘图坐标系. 世界坐标系:在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 0),且是始终不变的.你面对 屏幕,你的右边是x正轴,上面是y正轴,屏幕 ...

  5. 网站QQ导航

    <a href="http://wpa.qq.com/msgrd?v=3&uin=[color=Red]361983679[/color]&site=qq&me ...

  6. x^y=(x&~y)|(~x&y)证明

    我见过最棒的证明是文氏图:(首先要知道二元布尔代数是集合的特殊情况,所以把X和Y当作两个集合,结论成立,那么在二元布尔代数里面也成立.)左边的圈是X,右边的圈是Y.如果是OR 也就是取或,中间的白色的 ...

  7. 用NAN简化Google V8 JS引擎的扩展

    通过C++扩展Google V8 JS引擎的文章很多,Google V8 JS带的例子也容易明白.但是大部分文章都是Hello World型的,真正使用时发现处处是坑.扩展V8最经典的例子就是node ...

  8. LR测试https协议设置方法

    测试ssl隧道的设置方法: 前一段时间使用loadrunner测试ssl vpn时,使用ssl隧道一直配置不成功,经过查资料,终于成功,记录一下,方便大家测试.走ssl隧道与普通http,只需多设两个 ...

  9. Link Collecting

    ----------------------------------\ ACM入门总结之常见输入输出格式暨hdu1089~1096 题解,谨献给对acm感兴趣的新人 - 博客频道 - CSDN.NET ...

  10. CentOS 7 /RHEL 7: How To Change The System Locale

    The system localeare used to control the language setting of system services and the UI before the u ...