1. 程式人生 > >ES6模塊和CommonJS、AMD本質區別思考

ES6模塊和CommonJS、AMD本質區別思考

命名 運行時加載 這也 全局 編譯 soft span 對象 -s

CommonJS和AMD本質上是用一個全局變量定義了一個命名空間

以sea.js為例,各個模塊輸出一個對象,然後這個對象掛載在seajs.cache屬性下,各個模塊作為一個對象存在。

而ES6模塊則不是,模塊未被引用時,不會存在該模塊對象。

CommonJS和AMD是運行時加載,ES6模塊是編譯時加載

這個區別能解釋上一個區別,這也是二者區別最本質的根源。

CommonJS和AMD要加載一個模塊必須先讓模塊執行(查看網路能看到加載對應的js文件),而ES6在編譯時就完成了加載。

ES6模塊和CommonJS、AMD本質區別思考