<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 一、榫卯 &emsp;&emsp;榫卯(sǔn mǎo),是古代中國建筑、家具及其它器械的主要結構方式,是在兩個構件上采用凹凸部位相結合的一種連接方式。 &emsp;&emsp;若榫卯使用得當,兩塊木結構之間就能嚴密扣合,達到“天衣無縫”的程度,并且不用釘子。 :-: ![](https://img.kancloud.cn/6a/2a/6a2af20876cd4c585add559e748399a8_600x495.jpg =300x) &emsp;&emsp;下面這張圖來自于山西懸空寺,屋檐下面的那些都是用榫卯做成的,沒有用一顆釘子。 :-: ![](https://img.kancloud.cn/74/83/7483486fefdd20bad17b47f7c906f3d2_450x389.jpg =300x) ## 二、JavaScript與榫卯 &emsp;&emsp;在開發頁面的時候,或多或少的要寫JavaScript,除了些業務邏輯的代碼外。 &emsp;&emsp;還有DOM操作,AJAX處理,事件綁定,實用功能,Promises/A+規范實現,樣式、集合、數組、函數、對象、時間、URL、動畫、模版、cookie等各種操作。 &emsp;&emsp;現在網上相關的開源庫很多,例如封裝DOM操作的,有[Zepto](https://github.com/madrobby/zepto)、[Sizzle引擎](https://github.com/jquery/sizzle)等,實用庫[Underscore](http://underscorejs.org/)、[Sugar](http://sugarjs.com/)等。 :-: ![](https://img.kancloud.cn/1c/b5/1cb52371a4785cd898ce154cd665c093_1458x208.png =600x) &emsp;&emsp;這些封裝好的庫使用起來方便兼容性好,但是有些時候我僅僅是需要使用里面的個別方法,例如做活動頁面。 &emsp;&emsp;就為了這幾個個別方法而把整個庫都引進來,有種殺雞用牛刀的感覺。 &emsp;&emsp;當看到下面那位非洲朋友用圣劍來切牛排,囧,瞬間就能體會那種感覺。 :-: ![](https://img.kancloud.cn/30/37/30378b9d05afacf2d3edbe7b030ad92d_523x477.jpg =300x) &emsp;&emsp;而如果想把里面的個別方法抽出來,又不能直接用,因為這些方法可能引用了庫中的私有方法屬性等,就好像建筑里的釘子,需要釘子來銜接。 &emsp;&emsp;所以這個時候就需要使用自己封裝的函數,就好比榫卯,拿來即可用,而不需要特定的釘子。 ## 三、構建榫卯結構 &emsp;&emsp;要想構建,最方便的還是要參考下現有的庫是如何做的,這樣能少走些彎路。 &emsp;&emsp;在Github上面看到了兩個頁面,專門記錄了各種類庫《[Front-End-Develop-Guide](https://github.com/icepy/Front-End-Develop-Guide)》與《[Awesome JavaScript](https://github.com/sorrycc/awesome-javascript)》 &emsp;&emsp;有些時候也不用一定要自己寫,有相關的類庫就直接收錄進來,要用的時候就不用再到網上去各種搜索啦! **1)DOM選擇器** &emsp;&emsp;這是在平時開發頁面必用的,ES5規范出來后,定義了很多實用的方法,可以不再像以前那樣編寫大量的兼容代碼。 &emsp;&emsp;原生的“[querySelectorAll](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/querySelectorAll)”和“[querySelector](https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelector)”非常強大,語法和JQuery中的選擇器大致一樣。 [Sizzle](https://sizzlejs.com/)也就是是[jQuery](https://jquery.com/)的選擇器引擎,將近2000行的代碼,不過很多代碼是在兼容IE6、IE7等古老的PC瀏覽器,關于這個引擎可以參考《[jQuery中的Sizzle引擎分析](http://www.cnblogs.com/strick/p/5078435.html)》 &emsp;&emsp;我現在都是在移動端開發,移動端的瀏覽器都要高級些,所以我打算參考[Zepto](https://github.com/madrobby/zepto)來封裝。 &emsp;&emsp;這個是針對移動端瀏覽器,并且是模塊化的,想參考里面的3個模塊,event是事件模塊。 :-: ![](https://img.kancloud.cn/2c/ed/2cedad440a7187d0a6f4654d7271ac75_738x118.jpg) &emsp;&emsp;還看到兩個更小的庫,[HTML](http://nbubna.github.io/HTML/)和[140 medley](https://github.com/honza/140medley)。 **2)實用庫** &emsp;&emsp;實用庫我打算參考[Underscore](http://underscorejs.org/)與[Sugar](http://sugarjs.com/),這兩個庫都有各自的主頁,分類也很清晰。 &emsp;&emsp;Underscore還有個帶注釋的[源代碼頁面](http://underscorejs.org/docs/underscore.html)。 &emsp;&emsp;Underscore分為Collection、Array、Function、Object、Utility幾大部分。 &emsp;&emsp;Sugar分為Array、String、Number、Date、Object、Function、RegExp、Range幾大部分。 &emsp;&emsp;根據他們的分類,兩個庫之間有些地方應該還能互補一下。 :-: ![](https://img.kancloud.cn/f5/96/f596638169c782991f3dff9022611d7d_419x149.jpg =300x) **3)其他相關的庫** 1. 對時間的各種操作,有兩個庫用的人蠻多,[Datejs](http://www.datejs.com/)和[moment](http://momentjs.com/)。我是比較前者,代碼比較少,比較容易看源碼。 2. Promises/A+規范的實現,相關庫比較多,[when.js](https://github.com/cujojs/when)、[Zepto中的deferred.js](https://github.com/madrobby/zepto/blob/master/src/deferred.js)還有[promise-polyfill](https://github.com/taylorhakes/promise-polyfill)。如果對這個規范概念不是很清楚,可以參考《[Promises/A+規范的實現](http://www.cnblogs.com/strick/p/5092092.html)》 3. 模板喜歡用[mustache](https://github.com/janl/mustache.js),代碼簡潔,但功能不簡潔,用了以后就會知道很方便。 4. 本地存儲的封裝,可以借鑒或直接引用[store.js](https://github.com/marcuswestin/store.js),代碼就100多行,完全能看懂。 5. cookie的各種操作,可以借鑒或直接引用[js-cookie](https://github.com/js-cookie/js-cookie),源碼也是我喜歡的100多行。 6. 對URL的基本操作,可以借鑒或直接引用[domurl](https://github.com/Mikhus/domurl)。 &emsp;&emsp;我選擇庫都會選擇小巧、功能比較單一、而且不依賴第三方庫。 &emsp;&emsp;源碼看起來也能方便點,抽出代碼的時候也能少費點時間。 &emsp;&emsp;這里只是做個拋磚引玉,具體怎么構建可以根據實際情況來操作。 ***** 參考資料: [Zepto源碼分析](https://github.com/mominger/blog) [前端開發指南](https://github.com/icepy/Front-End-Develop-Guide) [Awesome JavaScript](https://github.com/sorrycc/awesome-javascript) ***** > 已建立一個微信前端交流群,如要進群,請先加微信號freedom20180706或掃描下面的二維碼,請求中需注明“看云加群”,在通過請求后就會把你拉進來。還搜集整理了一套[面試資料](https://github.com/pwstrick/daily),歡迎閱讀。 ![](https://box.kancloud.cn/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看