組件庫 引入模式 amd、commonjs、umd、esm


https://juejin.im/post/6844903978333896718

https://segmentfault.com/a/1190000020093455

https://zhuanlan.zhihu.com/p/54290649

 

UMD 版本可以通過 <script> 標簽直接用在瀏覽器中。jsDelivr CDN 的

ESM 格式被設計為可以被靜態分析,所以打包工具可以利用這一點來進行“tree-shaking”並將用不到的代碼排除出最終的包

現代瀏覽器中通過 <script type="module"> 直接導入

 

歷史上,js一直沒有模塊(module)體系,無法將一個項目拆分成多個模塊文件。正對這一情況,社區出現了一些統一的規范:CommonJs和AMD,前者是針對服務端的js,也就是nodejs。后者是針對瀏覽器的 

以前的js不能引入三方模塊,所有的代碼必須寫到一個文件中,導致單個文件代碼量大、業務功能模塊不清晰、難於維護。而編寫模塊化代碼,有助於使您的代碼變得松散耦合,這對於構建可維護的表示工程代碼大有幫助。基於此,越來越多的模塊規范出現,如commonjs、amd、umd、esm

 

一些類庫均有lib,es文件夾用來表示commonjs寫法和es6寫法,我們可以用babel直接轉碼生成.

 

 

AMD一開始是CommonJS規范中的一個草案,全稱是Asynchronous Module Definition,即異步模塊加載機制。后來由該草案的作者以RequireJS實現了AMD規范,所以一般說AMD也是指RequireJS

 

CMD是SeaJS在推廣過程中生產的對模塊定義的規范

 

CommonJS規范為CommonJS小組所提出,目的是彌補JavaScript在服務器端缺少模塊化機制,NodeJS、webpack都是基於該規范來實現的。

 

ES6 Module是ES6中規定的模塊體系,相比上面提到的規范, ES6 Module有更多的優勢,有望成為瀏覽器和服務器通用的模塊解決方案。

 

umd

其是amd和commonjs的統一規范,支持兩種規范,即寫一套代碼,可用於多種場景

 

ESM

ESM是ES6提出的標准模塊系統,相信大家都用過

 

node支持ESModule

//node最新版本進一步增強了對ESModule的支出,只需要在package.json增加一個選項即可 "type":"module"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM