1. 程式人生 > >AMD CMD commonJS es6 到底是什麼區別

AMD CMD commonJS es6 到底是什麼區別

看到很多人傻傻的分不清楚 AMD、CMD 、 commonJS 、 es6的區別,實際上這跟這幾年前段技術的發展有很大的關係。

實際上這是JavaScript的模組化思想演進的一個過程。

最開始的時候我們都是在 首頁 index.html 中,通過N多個<script>標籤來引入各個js檔案(每個js 檔案就是一個單獨的模組)。這其中我們的載入先後的順序非常的受限制。需要根據依賴的先後進行依次載入。

AMD首先它是一個規範  全稱是Asynchronous Module Definition,即非同步模組載入機制。AMD很短也很簡單,但它卻完整描述了模組的定義,依賴關係,引用關係以及載入機制。從它被requireJS,NodeJs,Dojo,JQuery使用也可以看出它具有很大的價值。AMD規範簡單到只有一個API,即define函式:

define([module-name?], [array-of-dependencies?], [module-factory-or-object]);
   module-name: 模組標識,可以省略。    array-of-dependencies: 所依賴的模組,可以省略。    module-factory-or-object: 模組的實現,或者一個JavaScript物件。

 常用的require.js就是這個的規範實現。

CMD 是 SeaJS 在推廣過程中對模組定義的規範化產出。seaJs是國內著名工程師玉伯提出來的,它既遵循了amd規範,又遵循commonJs規範,所以稱之為cmd規範。

CommonJS規範是誕生比較早的。NodeJS就採用了CommonJS,這種寫法適合服務端,因為在伺服器讀取模組都是在本地磁碟,載入速度很快。但是如果在客戶端,載入模組的時候有可能出現“假死”狀況,因為它是同步載入所要依賴的其他模組。

es6 的意思是javascript 本事實現了 模組化的  不用再引入第三方庫(如:require.js  sea.js)