CommonJS/AMD/CMD/UMD概念初探

一、CommonJS是一種規範,NodeJS是這種規範的實現。javascript

1.一、CommonJS 加載模塊是同步的,因此只有加載完成才能執行後面的操做。html

參考:java

http://www.commonjs.org/node

http://javascript.ruanyifeng.com/nodejs/module.htmlgit

二、AMD是RequireJS在推廣過程當中對模塊定義的規範化產出。github

2.一、AMD異步加載模塊。web

參考:api

https://github.com/amdjs/amdjs-api/wiki/AMD瀏覽器

http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html服務器

三、CMD是SeaJS在推廣過程當中對模塊定義的規範化產出。

3.一、對於依賴的模塊AMD是提早執行,CMD是延遲執行。不過RequireJS從2.0開始,也改爲能夠延遲執行(根據寫法不一樣,處理方式不經過)。

3.二、CMD推崇依賴就近,AMD推崇依賴前置。

參考:

https://github.com/cmdjs/specification/blob/master/draft/module.md

https://github.com/seajs/seajs/issues/242

四、UMD是AMD和CommonJS的融合。

4.一、AMD 瀏覽器第一的原則發展 異步加載模塊。

4.二、CommonJS 模塊以服務器第一原則發展,選擇同步加載,它的模塊無需包裝(unwrapped modules)。

4.三、這迫令人們又想出另外一個更通用的模式UMD (Universal Module Definition)。但願解決跨平臺的解決方案。 UMD先判斷是否支持Node.js的模塊(exports)是否存在,存在則使用Node.js模塊模式。 在判斷是否支持AMD(define是否存在),存在則使用AMD方式加載模塊。

參考:

https://github.com/umdjs/umd

以上是關於對JS的概念的理解,後續在進行深刻嘗試。

參考:

http://javascript.ruanyifeng.com/nodejs/module.html

http://www.cnblogs.com/fullhouse/archive/2011/07/15/2107416.html

https://justineo.github.io/singles/writing-modular-js/

https://my.oschina.net/felumanman/blog/263330?p=1

http://web.jobbole.com/82238/

http://blog.gejiawen.com/2015/11/03/what-is-amd-cmd-commonjs-umd/?utm_source=tuicool&utm_medium=referral

https://www.zhihu.com/question/20351507

http://www.cnblogs.com/mfc-itblog/p/5216820.html

1.對於依賴的模塊AMD是提早執行,CMD是延遲執行。不過RequireJS從2.0開始,也改爲能夠延遲執行(根據寫法不一樣,處理方式不經過)。

2.CMD推崇依賴就近,AMD推崇依賴前置。

相關文章
相關標籤/搜索