摘要: 继续接上一篇来分享剩下的seajs源码,计划这一篇写完以后再来一篇就结束了。这一篇就是分析moudle之前的部分首先是前面的一些变量声明 1 var doc = document 2 var cwd = dirname(doc.URL) 3 var scripts = doc.scripts 4 5 // 默认的是seajsnode作为id添加到dom中,或者作为script里最后一个项添加到dom中 6 var loaderScript = doc.getElementById("seajsnode") || 7 scripts[scripts.length - 1] 8 阅读全文
posted @ 2014-03-17 21:44 胖蝎子 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 说明下,写这个不是说明接下去不分析jquery了,只是这两天在准备面试,顺便把seajs给读了,调节下心情。把seajs的源码分析速度写完以后,就会继续jquery。。。===================================================================================首先是seajs的大架构:1 /**2 * Sea.js 2.2.1 | seajs.org/LICENSE.md3 */4 (function(global, undefined) {5 //some code6 })(this)采用了... 阅读全文
posted @ 2014-03-16 11:39 胖蝎子 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 这篇主要是分析Sizzle引擎中最关键的一个函数Sizzle,这个函数接受四个参数selector,context,results,seed,这四个参数的意义分别是选择器,上下文环境,保存结果数组,还有一个未知。。 由于这个函数里面涉及了许多相关函数,所以先对主函数进行分析,并只是列出相关函数的作用。相关函数的分析会放在文章末尾。接下来先看主函数: 1 function Sizzle( selector, context, results, seed ) { 2 var match, elem, m, nodeType, 3 i, groups, old, ... 阅读全文
posted @ 2014-03-13 14:47 胖蝎子 阅读(543) 评论(1) 推荐(0) 编辑
摘要: 以下吐槽: 最近一直在面试啊找工作啊,然后学校里又有一堆事情,结果看代码的时间变少了。憋了好几天终于感觉可以写一篇文章了,早上就爬起来赶紧写下来,怕又忘了。吐槽下:小本科找工作真的好难。。。。正文开始:首先是Sizzle里面的一些基础方法,也可是说是用的比较多的东西。因为Sizzle一开始就定义了许许多多的变量,所以这边先讲一些这次会用到的变量(比较简单的。。) 1 expando = "sizzle" + -(new Date()), 2 //给每个Sizzle生成一个特征码,区别每个sizzle 3 preferredDoc = window.document, 4.. 阅读全文
posted @ 2014-03-13 10:18 胖蝎子 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 突然发现接下来马上就是Sizzle的核心代码了,这次就简单分析下Sizzle前面的剩下的代码。这次的篇幅会很短,因为剩下的代码就两段了,就当为Sizzle分析蓄力吧~话说,尝试着把博客变成响应式布局了(简单粗略版),不知道有没有人发现~首先是class2type,class2type中保存了一下[object name]-name的键值对,就是为了在判断类型的时候使用。这里使用了each函数来对字符串split后形成的array进行循环添加到class2type中。看代码:jQuery.each("Boolean Number String Function Array Date R 阅读全文
posted @ 2014-03-08 23:03 胖蝎子 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 接下去分析那个extend块,接下来是一个each函数,它对传入的数组中的每个值进行特定处理,根据返回值确定操作(明确返回 false则停止循环)each: function( obj, callback, args ) { var value, i = 0, length = obj.length, isArray = isArraylike( obj ); if ( args ) { if ( isArray ) { for ( ; i <解释不清楚...来个例子) //$( "#tes... 阅读全文
posted @ 2014-03-07 20:00 胖蝎子 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 这次分析的函数就是用extend添加到jQuery下的,这次分析将拆分成片段来讲,首先是最前面几个简单的变量和函数://保证当前页面上的每个jQuery都是独一无二的expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),isReady: true,//错误抛出函数error: function( msg ) { throw new Error( msg );},noop: function() {},接下来几个函数会涉及到jQuery的type函数和support中的ow 阅读全文
posted @ 2014-03-07 18:13 胖蝎子 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 这次主要分析的是JQuery中的extend函数,extend函数在JQuery中占的作用十分明显,在后期JQuery方法的添加上,基本是使用这个函数来添加到JQuery对象和prototype上的。这个函数另一个重要作用是在框架开发的时候使用,可以直接对JQuery增加新的功能。说明了重要性之后,就开始讲解函数了(函数的使用方法就不讲了,具体可以看官方文档:http://api.jquery.com/jQuery.extend/#jQuery-extend-target-object1-objectN)。首先是函数的位置:jQuery.extend = jQuery.fn.extend = 阅读全文
posted @ 2014-03-04 22:32 胖蝎子 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 以下这一段函数出现在实例化jQuery对象函数之后,是jQuery的prototype的最基本的几个函数,分析前先看这几个相关的常量和一些函数:var deletedIds = [];var slice = deletedIds.slice;var concat = deletedIds.concat;var push = deletedIds.push;var indexOf = deletedIds.indexOf;merge: function( first, second ) { var len = +second.length, j = 0, ... 阅读全文
posted @ 2014-03-04 10:11 胖蝎子 阅读(443) 评论(0) 推荐(0) 编辑
摘要: (function( global, factory ) { if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper window is present, // execute the factory and get jQuery // For environments that do not inherently posse 阅读全文
posted @ 2014-03-01 22:44 胖蝎子 阅读(781) 评论(0) 推荐(0) 编辑