AMD與CMD區別

來源:互聯網
上載者:User

標籤:

AMD與CMD區別

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

  1. AMD推崇依賴前置,在定義模組的時候就要聲明其依賴的模組
  2. CMD推崇就近依賴,只有在用到某個模組的時候再去require

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

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

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

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

同樣都是非同步載入模組,AMD在載入模組完成後就會執行改模組,所有模組都載入執行完後會進入require的回呼函數,執行主邏輯,這樣的效果就是相依模組的執行順序和書寫順序不一定一致,看網路速度,哪個先下載下來,哪個先執行,但是主邏輯一定在所有依賴載入完成後才執行

CMD載入完某個相依模組後並不執行,只是下載而已,在所有相依模組載入完成後進入主邏輯,遇到require語句的時候才執行對應的模組,這樣模組的執行順序和書寫順序是完全一致的

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

 

AMD與CMD區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.