1. 程式人生 > 其它 >淺談module.exports與exports,export與export default的區別

淺談module.exports與exports,export與export default的區別

淺談module.exports與exports,export與export default的區別

 

首先要明確module.exports與exports ,是CommonJS的規範,在Node.js中使用。export與export default ,是ES6規範,主要用於React或Vue中。他們之間的區別主要有以下幾點:

1.Node使用CommonJS規範,定義每個模組的內部,module變數代表當前模組,exports是module的屬性,表示對外的介面。載入某個模組,實際上是載入該模組的module.exports屬性。
2.Node為每隔模組提供了一個exports變數,指向module.exports,這等同於每個模組頭部有這樣的一行程式碼:var exports = module.exports。


3.ES6使用export和import來匯出/匯入模組。
4. export與export default均可用於匯出常量/函式/檔案/模組等。
5.在一個檔案或模組中,export/import可以有多個,export default只有一個。
6. 通過export方式匯出,在匯入時需要加{},export default不需要。
7.export能匯出變數/表示式,export default不可以。
8.CommonJS模組輸出是一個值的拷貝,ES6模組輸出是值的引用。
9.CommonJS模組是執行時載入,ES6模組是編譯時輸出介面。
10.CommonJS模組無論require多少次,都只會在第一次載入時執行一次,然後儲存到快取中,下次在require,只會去從快取取。