es6中,
node中,
總結:
起碼有一點,我們在專案中使用模組載入技術的時候,要明白你現在使用的關鍵字是屬於誰的!
比如require關鍵字,是屬於node的,還是webpack的,因為它們都有require函式。
如果連這個都弄糊塗了,就沒法繼續了,後來的事情會保持模稜兩可直到搞清楚,
所以,學習的時候,要盡量站到全域性的角度看問題。
其他實現了同步或非同步模組技術的庫(比如,requirejs等庫)暫不講,因為它們功能都比較單一,不易混淆,
主要容易混淆的還是在上面三者間,當專案中同時使用了nodejs,es6,webpack時就容易造成理解和使用混亂。
比如es6的import會被轉化為commonjs(同步)格式或者是amd(非同步)格式,所以不要把它認為是一種新的模組引用方式,babel缺省會把es6的模組轉化為commonjs規範的,你也不用費勁再把它轉成amd了,(但如果有需要轉譯成amd的形式,可以借助第三方工具,比如 traceur)。
同時,es6也支援可程式設計式的按需匯入模組,也因此實現了非同步載入,比如:
system.import('./module1.js')
.then(function(module1), function(e));
由此可見,es6的模組技術已經能或者說即將會替代非原生的模組載入技術,所以值得擁有和學習它!
JavaScript模組化程式設計思想演變
對大型的 來說,模組化程式設計非常重要。因為越是大型的 檔案命名衝突 檔案依賴程度都非常高,故而引入模組化思想。下面我從大家經常寫 的習慣來引。這種形式,各種變數,函式都將暴露在全域性環境下,示例如下 上面這種編寫方式是很常見的,也是非常不可取的,因為全域性環境完全被汙染了,非常容易造成命名衝突等問...
1 javascript模組化進化史
全域性function模式全域性函式模式 將不同的功能封裝成不同的全域性函式 問題 global被汙染了,很容易引起命名衝突 module1.js 資料 let data atguigu.com 運算元據的函式 function foo function bar module2.js let dat...
什麼是模組化?模組化的好處
1.高內聚低耦合,有利於團隊作戰,當專案很複雜的時候,將專案劃分為子模組分給不同的人開發,最後再組合在一起,這樣可以降低模組與模組之間的依賴關係體現低耦合,模組又有特定功能體現高內聚。2.可重用,方便維護,模組的特點就是有特定功能,當兩個專案都需要某種功能的時候,我們定義乙個特定的模組來實現該功能,...