AMD和CMD的區別

2021-07-23 10:59:30 字數 554 閱讀 8180

關於這兩個的區別網上可以搜出一堆文章,簡單總結一下

最明顯的區別就是在模組定義時對依賴的處理不同

1、amd推崇依賴前置,在定義模組的時候就要宣告其依賴的模組

2、cmd推崇就近依賴,只有在用到某個模組的時候再去require

這種區別各有優劣,只是語法上的差距,而且requirejs和seajs都支援對方的寫法

amd和cmd最大的區別是對依賴模組的執行時機處理不同,注意不是載入的時機或者方式不同

很多人說requirejs是非同步載入模組,seajs是同步載入模組,這麼理解實際上是不準確的,其實載入模組都是非同步的,只不過amd依賴前置,js可以方便知道依賴模組是誰,立即載入,而cmd就近依賴,需要使用把模組變為字串解析一遍才知道依賴了那些模組,這也是很多人詬病cmd的一點,犧牲效能來帶來開發的便利性,實際上解析模組用的時間短到可以忽略

為什麼我們說兩個的區別是依賴模組執行時機不同,為什麼很多人認為adm是非同步的,cmd是同步的(除了名字的原因。。。)

這也是很多人說amd使用者體驗好,因為沒有延遲,依賴模組提前執行了,cmd效能好,因為只有使用者需要的時候才執行的原因

AMD和CMD的區別

有必要簡單提一下兩者的主要區別,cmd推崇依賴就近,可以把依賴寫進你的 中的任意一行,例 define function require,exports,module 在執行時,首先是不知道依賴的,需要遍歷所有的require關鍵字,找出後面的依賴。具體做法是將function tostring後,...

初識AMD和CMD模組化

今天發現了阮一峰大牛的部落格,收藏一下裡邊有好多文章值得讀哦 amd asynchronus module definition 非同步模組定義 語法 define id dependents factory amd 是 requirejs 在推廣過程中對模組定義的規範化產出。amd規範 cmd c...

JS 模組化AMD和CMD

函式封裝 物件 立即執行函式 模組化規範 是一種專案的構架模式,這種構架模式讓js 重用性變得非常高,讓專案構架的一些複雜問題全部得以解決。例如,多個script標籤不會再出現了,我們只要用乙個script標籤進行引入就可以了。模組化那有兩個規範,amd規範和cmd規範,當然還有針對於nodejs後...