exports遮精、module.exports 和 export楞慈、export default到底有什么區(qū)別

在寫代碼的時候,總是被各式各樣的模塊規(guī)范所迷惑,來看看這些方式有什么區(qū)別吧

require: node 和 es6 都支持的引入
export / import : 只有es6 支持的導(dǎo)出引入
module.exports / exports: 只有 node 支持的導(dǎo)出

Node

module.exports / exports 是遵循CommonJS規(guī)范的一套規(guī)范,
其實(shí)在node編譯過程中,node會把js進(jìn)行頭尾包裝,會傳入require,exports荆忍,module這幾個變量格带。
一段正常的代碼:

var gulp = require('gulp');
gulp.task('help', function() {
  console.log('----------------------------------------');
  console.log('gulp                 開發(fā)模式');
  console.log('gulp build           部署模式');
  console.log('----------------------------------------');
});

node包裝后=>

(function (exports, require, module, __filename, __dirname) {
  var gulp = require('gulp');
  gulp.task('help', function() {
    console.log('-----------------------------------');
    console.log('gulp                 開發(fā)模式');
    console.log('gulp build           部署模式');
    console.log('-----------------------------------');
  });
});

第一個參數(shù)就是我們的exports,這個參數(shù)其實(shí)是module.exports的一個別名,他們倆指向的是同一塊內(nèi)存地址,但是在別的模塊使用require引入的時候,返回的是module.exports引用的內(nèi)容
其實(shí)不是的,在用法上,你可以直接在module.exports上賦值,比如:

module.exports = {
    a:'',
    b:'',
    c:''
}

這樣是沒有任何問題的,因為最終引用的是module.exports引用的內(nèi)容,但是這樣的話:

exports = {
    a:'',
    b:'',
    c:''
}

這樣就切斷了exports和module.exports之間的聯(lián)系,并且這個Object并不會被require等方式取到,這其實(shí)是一段沒有任何實(shí)際意義的代碼。

ES6

相對于Node中的模塊規(guī)范,ES6的模塊就比較清晰了,import,import {},export,export default.

  • export 和 export default
    首先了解一下這倆的區(qū)別

export與export default均可用于導(dǎo)出常量刹枉、函數(shù)叽唱、文件、模塊等
在一個文件或模塊中嘶卧,export尔觉、import可以有多個,export default僅有一個
通過export方式導(dǎo)出芥吟,在導(dǎo)入時要加{ }侦铜,export default則不需要
export能直接導(dǎo)出變量表達(dá)式专甩,export default不行。

  • import 和 import {}
    這兩個基本上不需要說的,前者是直接引入export default,后者是es6的解構(gòu)賦值,用于引入單個export
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钉稍,一起剝皮案震驚了整個濱河市涤躲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贡未,老刑警劉巖种樱,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俊卤,居然都是意外死亡嫩挤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門消恍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岂昭,“玉大人,你說我怎么就攤上這事狠怨≡及。” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵佣赖,是天一觀的道長恰矩。 經(jīng)常有香客問我,道長憎蛤,這世上最難降的妖魔是什么外傅? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蹂午,結(jié)果婚禮上栏豺,老公的妹妹穿的比我還像新娘彬碱。我一直安慰自己豆胸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布巷疼。 她就那樣靜靜地躺著晚胡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嚼沿。 梳的紋絲不亂的頭發(fā)上估盘,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音骡尽,去河邊找鬼遣妥。 笑死,一個胖子當(dāng)著我的面吹牛攀细,可吹牛的內(nèi)容都是我干的箫踩。 我是一名探鬼主播爱态,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼境钟!你這毒婦竟也來了锦担?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤慨削,失蹤者是張志新(化名)和其女友劉穎洞渔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缚态,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磁椒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了玫芦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衷快。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姨俩,靈堂內(nèi)的尸體忽然破棺而出蘸拔,到底是詐尸還是另有隱情,我是刑警寧澤环葵,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布调窍,位于F島的核電站,受9級特大地震影響张遭,放射性物質(zhì)發(fā)生泄漏邓萨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一菊卷、第九天 我趴在偏房一處隱蔽的房頂上張望缔恳。 院中可真熱鬧,春花似錦洁闰、人聲如沸歉甚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纸泄。三九已至,卻和暖如春腰素,著一層夾襖步出監(jiān)牢的瞬間聘裁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工弓千, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衡便,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像镣陕,于是被迫代替她去往敵國和親征唬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容