一塊兒學習jQuery2.0.3源碼—1.開篇

write less,do more

jQuery告訴咱們:牛逼的代碼不只精簡併且高效!css

2006年1月由美國人John Resig在紐約的barcamp發佈了jQuery,吸引了來自世界各地衆多JavaScript高手加入,由Dave Methvin率領團隊進行開發。現在,jQuery已經成爲最流行的JavaScript框架,在世界前10000個訪問最多的網站中,有超過55%在使用jQuery。ajax

jQuery 版本:截止2013年6月的版本是2.0.3和1.10.2。其中,jQuery1.10.2支持兼容各個版本的瀏覽器,而jQuery2.0.3並不徹底兼容IE 六、七、8,僅憑這份骨氣,便高看它幾分,所以在學習源碼時堅決果斷選擇了jQuery2.0.3,同時也是在呼籲:讓IE6儘早走向滅亡,最好是屍骨無存!瀏覽器

開篇

本系列文章的宗旨:學習jQuery源碼,便應習其精華,爲我所用!緩存

jQuery源碼中的精髓無外乎:初始化的設計思路;選擇器的設計方法;事件處理的設計方法;動畫效果的設計機制;Ajax封裝的設計思路;插件機制的設計;兼容性處理的設計方法;等。針對源碼中精髓部分將進行重點學習,其他部分源碼或簡述、或略去、或一句帶過。架構

縱覽

jQuery 2.0.3源碼的總體框架中,源碼共8829行,將其劃分爲下列各個部分,其中每一行的數字,如21,94是指源碼中的21行到94行的內容。框架

(14) (function(window,undefined){:定義自執行的匿名函數,全部源碼均包含在該匿名函數中less

(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框架庫,相信這個過程將使咱們那拙劣的編碼技術獲得極大的提升,還有那滿滿的成就感,以及自我確定。

所以,對於咱們,這份執著,值得!

相關文章
相關標籤/搜索