制造自己的榫卯


一、榫卯

榫卯(sǔn mǎo),是古代中國建築、家具及其它器械的主要結構方式,是在兩個構件上采用凹凸部位相結合的一種連接方式。

若榫卯使用得當,兩塊木結構之間就能嚴密扣合,達到“天衣無縫”的程度,並且不用釘子。

下面這張圖來自於山西懸空寺,屋檐下面的那些都是用榫卯做成的,沒有用一顆釘子。

 

二、JavaScript與榫卯

在開發頁面的時候,或多或少的要寫JavaScript,除了些業務邏輯的代碼外。

還有DOM操作,AJAX處理,事件綁定,實用功能,Promises/A+規范實現,樣式、集合、數組、函數、對象、時間、URL、動畫、模版、cookie等各種操作。

現在網上相關的開源庫很多,例如封裝DOM操作的,有ZeptoSizzle引擎等,實用庫UnderscoreSugar等。

 

這些封裝好的庫使用起來方便兼容性好,但是有些時候我僅僅是需要使用里面的個別方法,例如做活動頁面。

就為了這幾個個別方法而把整個庫都引進來,有種殺雞用牛刀的感覺。

當看到下面那位非洲朋友用聖劍來切牛排,囧,瞬間就能體會那種感覺。

而如果想把里面的個別方法抽出來,又不能直接用,因為這些方法可能引用了庫中的私有方法屬性等,就好像建築里的釘子,需要釘子來銜接。

所以這個時候就需要使用自己封裝的函數,就好比榫卯,拿來即可用,而不需要特定的釘子。

 

三、構建榫卯結構

要想構建,最方便的還是要參考下現有的庫是如何做的,這樣能少走些彎路。

在Github上面看到了兩個頁面,專門記錄了各種類庫《Front-End-Develop-Guide》與《Awesome JavaScript

有些時候也不用一定要自己寫,有相關的類庫就直接收錄進來,要用的時候就不用再到網上去各種搜索啦!

1)DOM選擇器

這是在平時開發頁面必用的,ES5規范出來后,定義了很多實用的方法,可以不再像以前那樣編寫大量的兼容代碼。

原生的“querySelectorAll”和“querySelector”非常強大,語法和JQuery中的選擇器大致一樣。

Sizzle也就是是jQuery的選擇器引擎,將近2000行的代碼,不過很多代碼是在兼容IE6、IE7等古老的PC瀏覽器,關於這個引擎可以參考《jQuery中的Sizzle引擎分析

我現在都是在移動端開發,移動端的瀏覽器都要高級些,所以我打算參考Zepto來封裝。

這個是針對移動端瀏覽器,並且是模塊化的,想參考里面的3個模塊,event是事件模塊。

還看到兩個更小的庫,HTML140 medley

 

2)實用庫

實用庫我打算參考UnderscoreSugar,這兩個庫都有各自的主頁,分類也很清晰。

Underscore還有個帶注釋的源代碼頁面

Underscore分為Collection、Array、Function、Object、Utility幾大部分。

Sugar分為Array、String、Number、Date、Object、Function、RegExp、Range幾大部分。

根據他們的分類,兩個庫之間有些地方應該還能互補一下。

 

3)其他相關的庫

1. 對時間的各種操作,有兩個庫用的人蠻多,Datejsmoment。我是比較前者,代碼比較少,比較容易看源碼。

2. Promises/A+規范的實現,相關庫比較多,when.jsZepto中的deferred.js還有promise-polyfill。如果對這個規范概念不是很清楚,可以參考《Promises/A+規范的實現

3. 模板喜歡用mustache,代碼簡潔,但功能不簡潔,用了以后就會知道很方便。

4. 本地存儲的封裝,可以借鑒或直接引用store.js,代碼就100多行,完全能看懂。

5. cookie的各種操作,可以借鑒或直接引用js-cookie,源碼也是我喜歡的100多行。

6. 對URL的基本操作,可以借鑒或直接引用domurl

 

我選擇庫都會選擇小巧、功能比較單一、而且不依賴第三方庫。

源碼看起來也能方便點,抽出代碼的時候也能少費點時間。

這里只是做個拋磚引玉,具體怎么構建可以根據實際情況來操作。

 

參考資料:

Zepto源碼分析

前端開發指南

Awesome JavaScript

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM