jQuery源码学习(版本1.11)-整体架构

13 篇文章 0 订阅

整体分析

如下,首先整个代码结构看上去就是一个闭包自执行,闭包执行的好处在于闭包拥有私有的作用域,不会污染全局作用域,最终再将jQuery作为一个命名空间导出到window下,这样代码管理起来非常方便,兼容性好。
jquery整个闭包执行,实际是执行了factory()方法,而factory()是作为参数传进去的,因此详细分析源码,就是分析作为参数传入闭包的函数。
(function( global, factory ) {

	if ( typeof module === "object" && typeof module.exports === "object" ) {
		module.exports = global.document ?
			factory( global, true ) :
			function( w ) {
				if ( !w.document ) {
					throw new Error( "jQuery requires a window with a document" );
				}
				return factory( w );
			};
	} else {
		factory( global );
	}
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {

    // code
}));

闭包自执行有两种写法,以上jQuery-1.11版本,使用了写法2
// 写法1
(function(arguments) {
	// code
})(arguments);

// 写法2
(function(arguments) {
	// code
}(arguments));

代码分段

对jquery-1.11.1.js源码进行分段分析,可得出如下的整体架构(闭区间内数组代码具体行数)。
(function( global, factory ){

	(46, 87) // 定义了一些变量以及函数jQuery = function( selector, context ) {};
	
	(89, 172) // 定义jQuery.fn = jQuery.prototype = {}; 里面给JQ对象添加了一些方法
	
	(174, 237) // 定义了jQuery.extend = jQuery.fn.extend = function(){}; extend是JQ对象的继承方法
	
	(239, 584) // 调用jQuery.extend扩展了一些方法,以及定义class2type function isArraylike( obj ) {};
	
	(585, 2730) // Sizzle
	
	(2737, 3062) // 定义构建JQ对象的方法
	
	(3086, 3248) // 定义jQuery.Callbacks = function( options ){};
	
	(3251, 3391) // 定义Deferred

	(3395, 3537) // ready方法
	
	(3546, 3611 ) // support ie < 9
	
	(3617, 3954) // 定义data() 数据缓存
	
	(3957, 4099) // 定义queue() 队列管理
	
	(4105, 4155) // 定义jQuery.access 
	
	(4159, 4267) // support
	
	(4273, 5269) // 事件处理 on() off() add()
	
	(5272, 5995) // DOM操作方法
	
	(5998, 6889) // css操作
	
	(6892, 6998) // jQuery.Tween
	
	()
	
	(7657, 8427) // val() attr() prop() addClass()
	
	(8435, 8466) // bind()
	
	(8477, 9994) // 提交数据和ajax() load()
	
	(10009, 10250) // 位置和尺寸的方法
	
	(10268, 10306) //导出jQuery命名空间
}());
对代码分段分析,整个jquery架构一目了然。


 
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值