1. 程式人生 > >require與import區別

require與import區別

原文:http://es6.ruanyifeng.com/#docs/module-loader

-CommonJS模組輸出的是一個值的拷貝,ES6模組輸出的是值的引用。

-CommonJS模組是執行時載入,ES6模組是編譯時輸出介面(ES6可以在編譯時就完成模組載入,效率要比CommonJS模組的載入方式高)

1. CommonJS模組輸出的是值的拷貝,也就是說,一旦輸出一個值,模組內部的變化就影響不到這個值。而Es6模組的執行機制與CommonJS不一樣。JS引擎對指令碼靜態分析的時候,遇到模組載入命令import,就會生成一個只讀引用。等到指令碼真正執行時,在根據引用到被載入的那個模組裡面去取值。ES6模組是動態引用,並且不會快取值,模組裡面的變數繫結其所在的模組。

2. ES6模組不會快取執行結果,而是動態的去被載入的模組取值,並且變數總是繫結其所在的模組。

3. ES6模組應該是通用的,同一個模組不用修改,就可以用在瀏覽器

require/exports是CommonJS在Node中實現的,import/export是ES6的模組。對Es6只要使用babel就可以了

ES6模組的設計思想,是儘量靜態化,使得編譯時就能確定模組的依賴關係,以及輸入和輸出的變數。

export命令用於規定模組的對外介面,import命令用於輸入其他模組提供的功能。