Node使用CommonJS規(guī)范,定義每個(gè)模塊的內(nèi)部,module變量代表當(dāng)前模塊,exports是module的屬性,表示對(duì)外的接口。加載某個(gè)模塊,實(shí)際上是加載該模塊的module.exports屬性。
Node為每隔模塊提供了一個(gè)exports變量,指向module.exports,這等同于每個(gè)模塊頭部有這樣的一行代碼:var exports = module.exports
ES6使用export和import來(lái)導(dǎo)出/導(dǎo)入模塊。
3.1 export與export default均可用于導(dǎo)出常量/函數(shù)/文件/模塊等;
3.2 在一個(gè)文件或模塊中,export/import可以有多個(gè),export default只有一個(gè);
3.3 通過(guò)export方式導(dǎo)出,在導(dǎo)入時(shí)需要加{},export default不需要;
3.4 export能導(dǎo)出變量/表達(dá)式,export default不可以。
CommonJS模塊輸出是一個(gè)值的拷貝,ES6模塊輸出是值的引用。
CommonJS模塊是運(yùn)行時(shí)加載,ES6模塊是編譯時(shí)輸出接口。
CommonJS模塊無(wú)論require多少次,都只會(huì)在第一次加載時(shí)運(yùn)行一次,然后保存到緩存中,下次在require,只會(huì)去從緩存取。
module.exports與exports ,是CommonJS的規(guī)范,被使用于Node.js中。export與export default ,是ES6規(guī)范,被使用于React或Vue中。