1. 程式人生 > >exports與module.exports的區別,export與export.defult區別

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

使用 es6 webpack 前端工程 關系 import 接口 的區別 通過

在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對象沒關系了

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

export與export.defult區別

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

//載入模塊 
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則不需要

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