一起学习jQuery2.0.3源码—1.开篇
write less,do more
jQuery告诉我们:牛逼的代码不仅精简而且高效!
2006年1月由美国人John Resig在纽约的barcamp发布了jQuery,吸引了来自世界各地众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的JavaScript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery 版本:截止2013年6月的版本是2.0.3和1.10.2。其中,jQuery1.10.2支持兼容各个版本的浏览器,而jQuery2.0.3并不完全兼容IE 6、7、8,仅凭这份骨气,便高看它几分,因此在学习源码时毫不犹豫选择了jQuery2.0.3,同时也是在呼吁:让IE6尽早走向灭亡,最好是尸骨无存!
开篇
本系列文章的宗旨:学习jQuery源码,便应习其精华,为我所用!
jQuery源码中的精髓无外乎:初始化的设计思路;选择器的设计方法;事件处理的设计方法;动画效果的设计机制;Ajax封装的设计思路;插件机制的设计;兼容性处理的设计方法;等。针对源码中精髓部分将进行重点学习,其余部分源码或简述、或略去、或一句带过。
纵览
jQuery 2.0.3源码的整体框架中,源码共8829行,将其划分为下列各个部分,其中每一行的数字,如21,94是指源码中的21行到94行的内容。
(14) (function(window,undefined){:定义自执行的匿名函数,所有源码均包含在该匿名函数中
(21,94) jQuery = function(){……}:定义了一些变量和函数
(96,283) jQuery.fn = jQuery.prototype={}:在jQuery对象原型中添加一些属性和方法
(285,347) jQuery.extend = jQuery.fn.extend : jQuery的继承方法,为添加后续代码提供良好的扩展性,同时扩展插件也是从该继承方法中扩展
(349,817) jQuery.extend() : 扩展一些工具方法(静态方法),如$.trim()、$.proxy()、等
(877,2856) Sizzle : 复杂选择器的实现,考虑了多种情况
(2880,3042) Callbacks : 回调对象,对函数的统一管理
(3043,3183) Deferred : 延迟对象,对异步的统一管理
(3184,3295) support : 浏览器的功能检测
(3308,3652) data() : 数据缓存,避免大数据量的元素挂载、预防内存泄露
(3653,3797) queue() : 队列方法,入队出队、执行顺序的管理
(3803,4299) attr()、prop()、val()、addClass()等 : 对元素属性的操作
(4300,5128) on()、trigger() : 事件操作的相关方法
(5140,6057) DOM操作 : 添加、删除、获取、包装、DOM筛选等
(6058,6620) css() : 样式的操作
(6621,7854) 序列化操作、数据提交和ajax方法:ajax()、load()、getJSON()等
(7855,8584) animate() : 运动(动画)的实现方法
(8585,8792) offset() : 位置和尺寸的方法
(8804,8821) jQuery中支持模块化的模式
(8826) window.jQuery = window.$ = jQuery:jQuery的符号简写为$
(8829) })(window):传入window参数
收尾
学习jQuery源码,其最终目的是要能够为我所用,即写出一套架构健壮、编码规范、运行稳定的属于自己的JS框架库,相信这个过程将使我们那拙劣的编码技术得到极大的提高,还有那满满的成就感,以及自我肯定。
因此,对于我们,这份执著,值得!

一起学习jQuery2.0.3源码—1.开篇的更多相关文章
- jQuery2.0.3源码分析系列(28) 元素大小
最近的分析都是有点不温不火,基本都是基础的回顾了 今年博客的目标目前总的来说有2大块 JS版的设计模式,会用jQuery来诠释 JS版的数据结构,最近也一直在狠狠的学习中. HTML息息相关的的样式 ...
- jQuery2.0.3源码分析系列之(29) 窗口尺寸
.height() .innerHeight() .innerWidth() .outerHeight() .outerWidth() .width() 基础回顾 一般的,在获取浏览器窗口的大小和位置 ...
- jQuery2.0.3源码
概览 整体结构 (function (){ (21 , 94) 定义了一些变量和函数 jQuery=function(); (96 , 293) 给jQuery对象添加一些方法和属性; (285 ...
- 逐行分析jQuery2.0.3源码-完整笔记
概览 (function (){ (21 , 94) 定义了一些变量和函数 jQuery=function(); (96 , 293) 给jQuery对象添加一些方法和属性; (285 , 347) ...
- jquery-2.0.3 源码分析 整体架构
关键 var jQuery = function( selector, context ) { return new jQuery.fn.init(); } jQuery.fn = jQuery.pr ...
- [spring源码学习]二、IOC源码——配置文件读取
一.环境准备 对于学习源码来讲,拿到一大堆的代码,脑袋里肯定是嗡嗡的,所以从代码实例进行跟踪调试未尝不是一种好的办法,此处,我们准备了一个小例子: package com.zjl; public cl ...
- memcached学习笔记——存储命令源码分析上篇
原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...
- Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
- Android FrameWork 学习之Android 系统源码调试
这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...
随机推荐
- css sprite,css雪碧图生成工具V3.0更新
V3.0主要改进 1.增加了单独添加单张图片以及删除单张图片的功能 2.增加了生成.sprite文件用以保存雪碧图信息 3.增加了打开.sprite文件功能 什么是css sprite CSS spr ...
- 你不知道的CSS背景—css背景属性全解
CSS背景在网页设计中使用频率非常高,然而对于这个开发人员很熟悉的CSS属性,却隐藏着许多不为初级开发人员熟知的细节,这篇文章尝试扒开这层不为人知的面纱. 首先列举一下CSS中关于元素背景的所有属性并 ...
- F#之旅9 - 正则表达式
今天,cozy群有个群友发了条正则,问正则匹配相关的问题.虽然他的问题用html selector去处理可能更好,但是我也再一次发现:我忘了正则怎么写的了! 忘掉正则是有原因的,这篇文章会简单记录下F ...
- CozyRSS开发记录11-够用的RSS源管理
CozyRSS开发记录11-够用的RSS源管理 1.分析需求 先随手画个用例图来看看有哪些参与者会访问我们的源管理: 2.搞一个Controller类 根据前面分析得出的用例图,我们就可以来设计实现一 ...
- weibform中Application、ViewState对象和分页
Application: 全局公共变量组 存放位置:服务器 特点:所有访问用户都是访问同一个变量,但只要服务器不停机,变量一直存在于服务器的内存中,不要使用循环大量的创建Application对象,可 ...
- jQuery判断checked的三种方法
今天在查看他人源码时看到在判断复选框是否选中时,与自己的写法不同: .is(":checked") vs .prop("checked") == true 因此 ...
- Makefile笔记之二------make的递归执行
1.make的递归过程指的是: 在Makefile中使用"make"作为一个命令来执行本身或者其它makefile文件的过程. 2.递归的意义: 当前目录下存在一个"su ...
- Redis集群搭建1
wget .168.0.201:6379 192.168.0.201:6380 192.168.0.201:6381 192.168.0.202:16379 192.168.0.202:16380 1 ...
- JS—事件对象
在触发DOM上的某个事件时,会产生一个事件对象event.这个对象中包含着所有与事件有关的信息.包括导致事件的元素,事件的类型以及其他与特定事件相关的信息. 举例鼠标操作导致的事件对象中,会包含鼠标位 ...
- nefu1109 游戏争霸赛(状压dp)
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...