读jQuery源码之开篇

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

好久没有写博客了,不是我忘记了这个习惯,而是这一年半的时间我在经历技术的转型,所以在.NET上面的技术没有太多的深入了。

从再次回到凡客开始,我已经从一名有3年开发经验的.NET工程师向前端(H5)全面转型。至于为什么转型,不在这篇博客赘述了!

去年5月开始,我把自己当作一个绝对的新手,从最基本的,最原始的技术学起(HTML,CSS,DIV布局,PS切图,javascript等等等等)。

到现在,也还在继续学习。jQuery源码学习,我一直觉得是必须的,不是要多么熟悉使用,当然源码熟悉了,使用也就水到渠成了。学习jQuery源码的过程是一个加深认识和深入学习Javascript的过程,这非常重要。

这个序列的博客,我没打算写jQuery的太多细节部分,而是找出我学习过程中,我自己觉得比较有趣,比较能够加深对javascript的认识的部分写下来与大家分享。如果大牛路过有什么吐槽,也请随意,我乐意接受并改进。

我选择了jQuery2.1.4目前最新的版本来学习(3.0版本还没正式发布),因为省去一些兼容性繁琐的代码部分,更能清晰看到jQuery的本质。

如果后续更新了版本,我会改到最新版来学习,总之,紧跟最新版的jQuery学习来分享。

这个序列的博客会参考书籍《jQuery技术内幕:深入解析jQuery架构设计与实现原理 》,以及jQuery官网,我会尝试更多的代码实践来记录博客里面。

一,最粗略的骨架如下

(function(global, factory) {if(typeofmodule === "object" &&typeofmodule.exports === "object") {

module.exports= global.document ?factory(global,true) :function(w) {if(!w.document) {thrownewError("jQuery requires a window with a document");

}returnfactory(w);

};

}else{

factory(global);

}

}(typeofwindow !== "undefined" ? window :this,function(window, noGlobal) {//...}))

这里主要一个javascript点:匿名函数自调用或者说自执行。这么封装的目的是为了满足Commonjs规范,但是我觉得没什么用,目前seajs吸收AMD和Commonjs的优点,能够很好的满足要求。

而且我相信模块化会成为一个标准,就像HTML5一样很多属性和效果已经不需要js来实现了。

匿名函数自调用或者说自执行,写法有很多,我列举一些如下:

(function(){console.log(1);})();

(function(){console.log(2);}());!function(){console.log(3);}();+function(){console.log(4);}();-function(){console.log(5);}();~function(){console.log(6);}();voidfunction(){console.log(7);}();newfunction(){console.log(8);}();

开篇就到这里吧!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航