在 ES6 以前,社區制定了一些模塊加載方案,最主要的有 CommonJS 和 AMD 兩種。前者用於服務器,後者用於瀏覽器。ES6 在語言標準的層面上,實現了模塊功能,並且實現得至關簡單,徹底能夠取代 CommonJS 和 AMD 規範,成爲瀏覽器和服務器通用的模塊解決方案。
ES6 模塊的設計思想,是儘可能的靜態化,使得編譯時就能肯定模塊的依賴關係,以及輸入和輸出的變量。CommonJS 和 AMD 模塊,都只能在運行時肯定這些東西。好比,CommonJS 模塊就是對象,輸入時必須查找對象屬性。es6
commonJS 和 es6模塊化 區別:
es6 {
export : '能夠輸出多個,輸出方式爲 {}' ,
export default : ' 只能輸出一個 ,能夠與export 同時輸出,可是不建議這麼作',
解析階段肯定對外輸出的接口,解析階段生成接口,
模塊不是對象,加載的不是對象,
能夠單獨加載其中的某個接口(方法),
靜態分析,動態引用,輸出的是值的引用,值改變,引用也改變,即原來模塊中的值改變則該加載的值也改變,
this 指向undefined
}
commonJS {
module.exports = ... : '只能輸出一個,且後面的會覆蓋上面的' ,
exports. ... : ' 能夠輸出多個',
運行階段肯定接口,運行時纔會加載模塊,
模塊就是對象,加載的是該對象,
加載的是整個模塊,即將全部的接口所有加載進來,
輸出的是值的拷貝,即原來模塊中的值改變不會影響已經加載的該值,
this 指向當前模塊
}瀏覽器