es6模塊與 commonJS規範

es6

export : ‘可以輸出多個,輸出方式爲 {}’ ,

export default : ’ 只能輸出一個 ,可以與export 同時輸出,但是不建議這麼做’,

解析階段確定對外輸出的接口,解析階段生成接口,

模塊不是對象,加載的不是對象,

可以單獨加載其中的某個接口(方法),

靜態分析,動態引用,輸出的是值的引用,值改變,引用也改變,即原來模塊中的值改變則該加載的值也改變,

this 指向undefined
這種加載稱爲“編譯時加載”或者靜態加載,即 ES6 可以在編譯時就完成模塊加載,效率要比 CommonJS 模塊的加載方式高

 // 報錯

    import { 'f' + 'oo' } from 'my_module';

 

    // 報錯

    let module = 'my_module';

    import { foo } from module;

 

    // 報錯

    if (x === 1) {

      import { foo } from 'module1';

    } else {

      import { foo } from 'module2';

    }
//上面三種寫法都會報錯,因爲它們用到了表達式、變量和if結構。在靜態分析階段,這些語法都是沒法得到值的

commonJS

module.exports = … : ‘只能輸出一個,且後面的會覆蓋上面的’ ,

exports. … : ’ 可以輸出多個’,

運行階段確定接口,運行時纔會加載模塊,

模塊是對象,加載的是該對象,

加載的是整個模塊,即將所有的接口全部加載進來,

輸出是值的拷貝,即原來模塊中的值改變不會影響已經加載的該值,

this 指向當前模塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章