關於javascript模組載入技術的一些思考,javascript模組載入

來源:互聯網
上載者:User

關於javascript模組載入技術的一些思考,javascript模組載入

前不久有個網友問我在前端使用requireJs和seajs的問題,我當時問他你們公司以前有沒有自己編寫的javascript庫,或者javascript架構,他的回答是什麼都沒有,他只是聽說像requirejs和seajs是新東西新技術,很有價值所以想用它。

  這位網友的問題引起了我對javascript模組載入技術的思考,上篇文章我給出了自己寫的一個javascript庫的基本結構,其實寫這篇文章的一個起因就是因為我想使用requirejs或者seajs這樣的技術來重新設計我寫javascript庫的基本模型,當我深入瞭解這個技術後,我發現使用模組載入系統來解決把javascript庫裡通用代碼和業務代碼解耦的問題,是不正確的,模組載入系統的作用範圍是解決不同javascript庫之間的依賴問題,而不是協助你去如何開發一個javascript庫。

  那麼什麼是javascript的模組載入系統呢?

  模組系統主要為瞭解決不同javascript庫裡操作對象的命名衝突問題以及不同javascript庫之間依賴的問題,模組載入系統是針對大型web前端應用或者說是巨型的web前端應用。

  一般巨型的web前端應用頁面裡,該頁面的功能非常豐富,業務非常龐雜,而且隨著時間推移,頁面的功能經常會發生變遷,所以導致前端開發人員經常要開發出針對新功能的功能模組,但是實際業務裡各個功能模組之間的功能還有可能相互滲透,相互依賴的,關係錯綜複雜,當頁面複雜後,各個前端庫之間的關係就出現很難管理和控制的問題,這個時候模組載入系統才會派上用場。

  對於大多數程式員而言,能獨立承擔這麼大web前端應用的機會並不是太多,而開發中小型web前端應用的機會會多的多,例如企業級的web項目,這樣的項目使用到的javascript庫的種類很少,各個庫的依賴關係很好控制,是沒有必要引入什麼模組管理系統的必要,就算很多中小型互連網公司的網頁,估計也不會比企業級web應用前端那麼複雜,所以它的模組之間或者說javascript庫之間的關係很好管理的。其實像上面這些中小應用都是針對某些或某一個具體情境進行的,因此我個人覺得面對這樣的web前端項目我們最後能自己形成一個獨立的javascript庫,這個庫的特點應該和jQuery這種類型的庫類似:一個主庫加上若干個外掛程式庫的模式,主庫的目的是解決通用性的問題,它應該是可以進行複用和遷移的,而外掛程式庫的目的往往和業務代碼相關的,不過為了區別主庫和外掛程式庫的範圍問題,所以我在庫裡加上了命名空間的功能。

  Javascript模組載入技術和hadoop的技術有些相同點,那就是它們都是針對超大型系統的技術,它們只有在一定條件下才能發揮它們的作用,所以這些技術都是從大型互連網公司推出出來,因為大型互連網公司隨著應用變大變複雜後必須要去解決的問題,當你系統還是處於起步階段,這些技術的運用往往要謹慎,我們應該找出最簡單最有效方法解決我們實際問題,如果你覺得這個系統以後會越來越大,那麼你應該保留以後使用這些技術的介面,如果使用太早了,很有可能當系統規模擴大後,你重構代碼的代價會更高。

  對於模組載入系統,它最適合的情境是解決大型web前端應用模組之間的解耦的問題,如果我們只要新寫一個javascript檔案就馬上使用模組載入技術,這個不是有點濫用技術的嫌疑了,我們運用某個技術之前不應該只是考慮它怎麼用,如何用,應該還要想想使用它有沒有價值的問題。

  最後我想說的是,我覺得中小型web前端應用到了生產部署,因為javascript並非最複雜,所以所有外部javascript檔案都打包成一個javascript外部檔案最好,這樣的好處就是減少了http請求個數,使用模組載入技術會讓你打包檔案操作很麻煩,甚至無法做到(像requirejs和seajs的模組都是以檔案為單位的,每個模組就是一個獨立檔案),這和解決減少http目的是相悖的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.