Commonjs,umd,amd,cmd的區(qū)別

npm發(fā)包的時候用到一個概念, 就是要配置webpack的libraryTarget
不太明白Commonjs,umd,amd,cmd 的區(qū)別,所以學習了下

1. Commonjs規(guī)范:
  • 定義了非瀏覽器應(yīng)用使用的API
  • 終極目標是提供一個類似python,ruby和java的標準庫
  • 是服務(wù)端模塊的規(guī)范,nodejs就是采用了這個規(guī)范
  • 一個文件就是一個模塊,加載使用require方法,返回內(nèi)部的exports對象
  • 同步加載
  • nodejs這種主要用于服務(wù)器的編程,加載的模塊文件一般都已經(jīng)存在在本地硬盤,所以加載起來比較快,不用考慮異步加載方式,所以commonjs 規(guī)范比較使用。
  • 但是如果是瀏覽器環(huán)境,要從服務(wù)器加載模塊,就必須采用異步模式,所以就有了amd,cmd的解決方案
2.AMD規(guī)范
  • AMD 是requirejs 推廣過程中對模塊化定義的 規(guī)范化產(chǎn)出
  • 提前執(zhí)行。2.0后也可以延遲執(zhí)行
3.CMD規(guī)范
  • cmd 是seajs推廣過程中對模塊化定義的 規(guī)范化產(chǎn)出
  • 延遲執(zhí)行
4.UMD 規(guī)范
  • umd 是AMD和commonjs 規(guī)范的糅合
  • 可以自己寫判斷,nodejs環(huán)境使用commonjs規(guī)范,瀏覽器使用amd規(guī)范

總結(jié)來說:顯而易見,umd是最全能的

在使用commonjs2的時候,要使用require 方式引用,使用module.exports導出

commonjs2比commonjs多了,可以module.exports的方式導出

曾遇到一個bug,百度了下,說是webpack2+ import和module.exports不能混用
沒有具體試下require的寫法,只是把所有的寫法都改成了ES6 的import語法,就好了


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容