前兩個月項目組特別忙了,買了一本《Juqery技術內(nèi)幕,深入解析Jquery架構設計與實現(xiàn)原理》一直放著睡大覺;進入八月份項目終于過了TR5點,算是可一個喘口氣;這本書終于有時間拜讀一下。下面的一兩個月我將每天堅持看幾頁,并陸陸續(xù)續(xù)寫幾篇不倫不類的技術博客,談談自己的心得體會等等。
首先評價一下這本書吧,我本來想買《鋒利的Jquery》,但是電子版翻了一下,感覺還是有點基礎了;就在網(wǎng)上找找呀,終于看到了這本---《Juqery技術內(nèi)幕,深入解析Jquery架構設計與實現(xiàn)原理》,一看作者是阿里大牛,出版時間是14年1月,感覺,應該狠不錯,最起碼作者比較牛,講得東西比較新。呵呵呵。不扯淡了,開始進入正題。
第一篇Jquery整體架構。
眾所周知,Jquery是業(yè)界最流行的Js庫(注,有人說是框架,本人不敢茍同,只是覺得Jquery還沒有到達支撐前端設計和架構的高度;別和我吵,你要非說是框架,我也認了)。有人裝文藝說,Jquery的API非常精致和優(yōu)雅;這個評價我想說,敢不敢從技術角度講一講;不要這么晦澀,弄這么高雅文藝的詞匯來形容。你就說設計巧妙,架構合理,上手容易,不就結了。好了,我不噴了,接著說。整體模塊可以分為三部分,入口模塊,底層支持模塊以及功能模塊。我畫了一張圖,如下。
圖上就整個構架做了一個概括。源碼架構如下:
(function( window, undefined ) { // 構造jQuery對象 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } // 工具函數(shù) Utilities // 異步隊列 Deferred // 瀏覽器測試 Support // 數(shù)據(jù)緩存 Data // 隊列 queue // 屬性操作 Attribute // 事件處理 Event // 選擇器 Sizzle // DOM遍歷 // DOM操作 // CSS操作 // 異步請求 Ajax // 動畫 // 坐標,尺寸,大小 window.jQuery = window.$ = jQuery; })(window);
由于設計比較復雜,這里不一一介紹,待具體源碼實現(xiàn)時,在介紹原理及使用技巧等等之類的。
打開源碼庫,所有代碼被包裹在一個立即執(zhí)行的匿名函數(shù)表達式中;
function(window,undefined){ var jQuery=...;//1 //.... ...... window.jQuery=window.$=jQuery;//2 })(window);
這樣做的好處有以下幾點:
1,創(chuàng)建了一個特殊的函數(shù)作用域(不了解的趕緊去看看作用域鏈,執(zhí)行環(huán)境,活動對象相關的知識,這里不解釋);這樣在自己的執(zhí)行環(huán)境中,就不會和已有的函數(shù),方法,變量(主要指同名)以及第三方庫沖突;在保證自己的代碼不收其他干擾外,同時不會破壞和污染全局環(huán)境和其他執(zhí)行環(huán)境的變量等。
2,window.jQuery=window.$=jQuery; 變量jQuery添加到window對象上,將JQuery添加到最頂層的全局執(zhí)行環(huán)境window對象的作用域中,成為全局變量,添加到其他值執(zhí)行環(huán)境的作用域鏈的最后端,保證其他執(zhí)行環(huán)境可以訪問和使用jQuery.
3,傳入window對象,把window對象充當參數(shù)傳入自調用匿名函數(shù)的內(nèi)部,也就進入該執(zhí)行環(huán)境,保證可以迅速訪問到window對象(不需要沿著作用域鏈會退到頂層作用域);另外就是在壓縮代碼時進行優(yōu)化。
4,傳入?yún)?shù)undefined,一方面和傳入window對象一樣,能夠縮短查找undefined時的作用域,并且在壓縮代碼時進行優(yōu)化。更重要的是,確保參數(shù)undefined的值是undefined,防止被重寫。、
結尾
第一篇,就這樣吧,整體構架有點復雜,自己也是一邊看一邊寫博客,大家發(fā)現(xiàn)不對的地方,多多提建議,共同進步。下一篇,我將介紹一下jQuery構造函數(shù)的源碼,以及實現(xiàn)原理和里面的一些比較晦澀難懂的邏輯。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:Jquery源碼分析系列(1)--Jquery整體架構-創(chuàng)新互聯(lián)
鏈接地址:http://chinadenli.net/article28/dcpcjp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、自適應網(wǎng)站、域名注冊、搜索引擎優(yōu)化、手機網(wǎng)站建設、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容