module.exports、exports和export、export default傻傻分不清楚

首先要知道前者和後者是兩個不同的規範下的模塊導出方式,我們來分別看一下:

CommonJS模塊規範

CommonJS規範規定,每個模塊內部,module變量代表當前模塊對象。moduleexports屬性就是對外提供的接口,加載該模塊時其實就是加載該模塊的module.exports屬性。

let a = 10;
let fn = ()+>{
    return 1 + 2;
}
module.exports.a = a;
module.exports.fn = fn;

exports則是Node爲了方便提供的一個簡單寫法,默認把exports指向了module.exports。就相當於在每個模塊的頭部隱式添加了

let exports = module.exports;

所以,不論用哪種寫法最後其實都是利用module.exports導出。

一定不能對exports進行賦值操作,這樣就切斷了二者的關聯。

exports.a = a;

當然,在CommonJS中引入模塊使用的是require關鍵字。

ES6模塊規範

每一個文件之中都只能有一個export default,但是可以有多個export。顧名思義,export default就是爲模塊指定默認的輸出。

export default let a = 1;

在引用模塊的時候,使用import...from...可以給模塊隨便起名字

import aa from '';

但是如果是export導出的變量,在引用時必須和導出時保持一致,如下:

let str = 'hello';
export {str};
export let num = 100;
import {str, num} from ''
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章