javascript模組化、模組載入器初探

來源:互聯網
上載者:User

  最常見網站的javascript架構可能是這樣的:

  • 一個底層架構檔案,如jQuery
  • 一個網站業務架構檔案,包含整站公用業務模組類(如彈框、ajax封裝等)
  • 多個業務檔案,包含每個具體頁面有關係的業務代碼

  為了減少一個HTTP請求,我們可能將底層架構檔案和網站業務架構檔案combo成一個檔案,作為一個公用檔案引入到每個需要使用javascript的頁面中,再在具體的頁面中引入和當前頁相關業務js檔案。為了減少頁面載入指令碼阻塞現象,我們還可以將指令檔放在html的body底部進行載入。

  這看似是一個很好的javascript架構方案。每個頁面最多引用兩個js檔案,開啟首頁後,後續頁面都可以使用緩衝中的combo過的js。如果底層架構改動不太頻繁,那麼緩衝在使用者瀏覽器中的combo過的架構檔案能夠使用較長的時間。

  當網站使用過一段時間後,你可能就會發現一些問題出來了。  

  • combo過的架構檔案過大。雖然可以使用YUI Compressor或Google Clousure等第三方壓縮公用程式壓縮、啟用gzip、使用CDN等最佳化手段最佳化。但底層架構會隨著開源架構升級,公用模組增多,導致combo後的架構檔案越來越大。
  • 業務架構改動頻繁,導致瀏覽器緩衝作用減小。由於業務的增加,可能公用的業務模組越來越多,導致業務架構頻繁修改。代碼修改後,瀏覽器需要重新載入新的架構檔案。
  • 團隊開發問題。隨著團隊人數的增加,可能每個人開發一個公用業務模組,造成多人需要對同一個檔案進行修改。若使用TFS這種獨佔式簽出的版本管理工具,會對團隊的開發效率造成一定影響。

  我們再看看使用模組載入器、並對javascript進行過模組化處理的網站的javascript架構:

  • 一個模組載入器檔案。如loader.js
  • 多個底層模組(如selector、ua等),多個業務模組(如dialog、suggest等)
  • 多個頁面相關的指令碼調用檔案

  優點體現出來了:

  • 按需載入:只載入當前頁面需要的模組和檔案,不需載入任何多餘檔案和代碼。大大縮減了代碼量
  • 並行載入:很多loader提供了並行載入多個檔案的功能,減少了代碼載入的時間,優點能做到下載和執行相分離。
  • 利於團隊開發:團隊中每個人負責開發各自的模組,之間互不影響。
  • 最大限度的利用緩衝:模組顆粒化後,每次更新可能只是其中一個小模組,其他未更新的可以利用瀏覽器中的緩衝。

  既然javascript模組化、使用模組載入器有這麼多的好處,那麼我們需要付出哪些努力:

  • 選用或實現loader
  • 底層架構的模組化:我們需要將底層架構按照各自的只能分成不同的模組,分清楚之間的依賴關係
  • 實現業務模組:將原來的業務模組按照loader約定的代碼方式進行修改,實現新的業務模組按照loader的方式編寫。  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.