1. 程式人生 > >AMD/CMD/CommonJs的區別

AMD/CMD/CommonJs的區別

同步 require 時間 執行順序 依賴 並行 使用 ejs nbsp

AMD/CMD/CommonJs是js模塊化開發的標準,目前對應的實現是RequireJs/SeaJs/nodeJs.

CommonJs 主要針對服務器端,AMD/CMD 主要針對瀏覽器端。

服務器端和瀏覽器端有什麽區別呢?

服務器端一般采用同步加載文件,也就是說需要某個模塊,服務器便停下來,等待它加載再執行,而瀏覽器要保證效率,需要采用異步加載,這就需要一個預處理,提前將說需要的模塊並行加載好。

AMD和CMD的區別,雖然都是並行加載文件,但還是有所區別,AMD是預加載,在並行加載js文件同時,還會解析執行該模塊(因為還需要執行,所以在加載某模塊前,這個模塊的依賴模塊必須先加載完),而CMD是懶加載,雖然會一開始就並行加載js文件,但是不會執行,而是在需要的時候才執行。

ADM是依賴前置,CMD是依賴就近

AMD 和CMD 的優缺點

AMD: 優點:加載速度快,因為並行解析,所以同一時間可以解析多個文件

缺點:並行加載,異步處理,加載順序不一定,可能會造成一些困擾。

CMD:優點: 只有使用的時候才解析執行js文件,因此,每個js文件的執行順序是可控的。

缺點:因為每個文件是同步執行,因此時間是所有文件執行時間之和。

如何使用ADM/CMD/CommonJs ?

nodejs是CommonJs的實現,所以使用node就可以,也不用引入其他包。AMD則是通過script 標簽引入RequireJs,CMD 則是script標簽引入Seajs

AMD/CMD/CommonJs的區別