exports與module.exports的區別,export與export.defult區別

在JS模塊化編程中,以前使用的是require.js或者sea.js。隨着前端工程化工具webpack的推出,使得前端js能夠使用CommonJS模塊標準或者使用ES6 moduel特性。
在CommonJs模塊標準中咱們載入模塊使用的是require(),輸出模塊用的是exports或者module.exports
在ES6中載入模塊咱們用的是import ,輸出模塊用的是export前端

exports與module.exports的區別

//載入模塊 
var m = require('./moduleA.js')
m.callName()
//輸出模塊
exports.callName = function(){
    console.log('jesse')
}
//也能夠這樣輸出
module.exports.callName = function(){
    console.log('jesse')
}

module.exports纔是module模塊的真正接口,而exports能夠理解爲它的一個副本
雖然修改exports對象的時候也會修改module.exports對象,但最終返回給調用的是module.exports對象
當module.exports對象經過賦值方式進行設定後,就已經和exports對象不要緊了node

so,個人理解是exports輸出的只是要輸出的對象的某個屬性,module.exports才真正輸出的是要輸出的對象。
一個模塊文件中能夠有多個exports輸出,但只能有一個module.exports輸出
這種方式廣泛用於node中模塊的編寫webpack

export與export.defult區別

es6moduel特性在node環境中並不能徹底支持,解決方法是用babel編譯es6

//載入模塊 
import {callName} from './moduleA.js'
callName()
//輸出模塊
export function callName (){
    console.log('jesse')
}

1.export與export default都可用於導出常量、函數、文件、模塊等
2.你能夠在其它文件或模塊中經過import+(常量 | 函數 | 文件 | 模塊)名的方式,將其導入,以便可以對其進行使用
3.在一個文件或模塊中,export、import能夠有多個,export default僅有一個
4.經過export方式導出,在導入時要加{ },export default則不須要web

相關文章
相關標籤/搜索