以下是我自己學習了es6的module之後自己的理解,希望大家能夠指出錯誤,畢竟新手一枚。
es6和commonjs的運行機制的比對
項目 | es6 | CommonJS |
---|---|---|
編譯時 | 生成import東西的引用 | 單純的檢查語法有沒有錯誤 |
運行時 | 執行import模塊的內容 | 執行require模塊的內容 |
結果 | 把引用弄到本模塊中 | 生成了一個模塊對象{id,exports,} 不會跟原始模塊有關係 |
單例 | 是 | 是 |
原模塊值改變 | 會跟着變 | 不會 |
用法
- 1、export 規定對外的接口,所以必須與模塊的內部的變量建立一對一對應關係;
function
也一樣 export 1//error
let m = 1;export m; //error
export let m = 1;//success
var m = 1; export {m};//success
- 2、直接導出引用的方法
-
export {xxx} from 'xxx'
- 3、同時引入default變量和其它接口
-
import default,{xxx,xxx} from 'xxx'
4、跨模塊常量
//a.js
export const aa = "aa";
//b.js
export const bb = "bb";
//c.js
export {aa} from 'a.js';
export {bb} from 'b.js';
//d.js
import {aa,bb} from 'c.js'
- 5、注意點
-
default
後面不能再直接跟變量了export default var m = 1//error
export default 1//success
- es6模塊中,頂層的
this = undefine
CommonJS頂層this = 當前模塊