首頁 > web前端 > js教程 > 關於javascript模組載入技術的一些思考_javascript技巧

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

WBOY
發布: 2016-05-16 16:29:43
原創
1430 人瀏覽過

前不久有個網友問我在前端使用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目的是相悖的。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板