NodeJS中模塊化——module.exports钞馁、exports虑省、import、require以及與export僧凰、export default的區(qū)別

一探颈、ES6標(biāo)準(zhǔn)發(fā)布后,module成為標(biāo)準(zhǔn)训措,標(biāo)準(zhǔn)的使用時以export指令導(dǎo)出接口,以import引入模塊怀大,但是在以往的node模塊中,我們采用的是CommonJS規(guī)范屏鳍,使用require引入模塊,使用module.exports導(dǎo)出接口

1山涡、NodeJS模塊化遵循了CommonJS規(guī)范鸭丛,根據(jù)CommonJS規(guī)范鳞溉,每個文件就是一個模塊熟菲,NodeJS會為每一個JS文件生成一個module對象,這個module對象會有一個exports屬性呆贿,并且這個exports屬性是一個空對象:

module={
    exports:{}
}

2、NodeJS模塊化的步驟:創(chuàng)建模塊母蛛、導(dǎo)出模塊(exports)彩郊、加載模塊(require)、使用模塊

3违帆、導(dǎo)出模塊exports:module對象的exports屬性用來對外暴露變量的畴、方法和整個模塊丧裁,當(dāng)其他文件require該模塊的時候,實際上就是讀取了該模塊module對象的exports屬性

4缓呛、導(dǎo)入模塊——require:是 CommonJS/AMD規(guī)范引入方式,是運行時加載匿情,因此理論上require可以放在運行代碼的任何地方,本質(zhì)上require是賦值過程玲躯,其實require的結(jié)果就是對象、數(shù)字朽缴、字符串、函數(shù)等,再把require的結(jié)果賦值給某個變量

5薪鹦、導(dǎo)入模塊——import:import是ES6的一個語法標(biāo)準(zhǔn),如果要兼容瀏覽器的話必須轉(zhuǎn)化成ES5的語法,是編譯時調(diào)用瘪匿,因此必須放在文件開頭,本質(zhì)上import是解構(gòu)過程棋弥,但是目前所有的引擎都還沒有實現(xiàn)import核偿,我們在node中使用babel支持ES6,也僅僅是將ES6轉(zhuǎn)碼為ES5再執(zhí)行疆液,import語法會被轉(zhuǎn)碼為require

二款筑、module.exports蹋砚、exports與export、export default的區(qū)別

1尼荆、用法上的不同:前兩者用法是后面加等號,后兩者的用法是后面直接接具體的導(dǎo)出唧垦,不需要等號
module.exports = ...
exports = ...
export ...
export default ...

2捅儒、exports實際上是module.exports的引用,在NodeJS中每一個JS文件都被看做是一個模塊振亮,NodeJS會為每一個JS文件生成一個module對象巧还,這個mosule對象有一個exports屬性,并且這個exports屬性是一個空對象坊秸。同時麸祷,還有一個exports,引用的是module的exports屬性褒搔,即:exports=module.exports

3阶牍、export和exports的區(qū)別:首先兩者是完全不同的兩個東西,export是ES6引入的語法站超,用于導(dǎo)出模塊中的變量荸恕,對象,函數(shù)死相,類融求。對應(yīng)的導(dǎo)入關(guān)鍵字是import,而exports是一個對象算撮,不是語法生宛。

4县昂、export和export default的區(qū)別:兩者都是ES6的導(dǎo)出語法,區(qū)別在于export default在一個模塊中最多只能有一個陷舅,而export在一個模塊中可以有多個倒彰;export default的對象、變量莱睁、函數(shù)待讳、類,可以沒有名字仰剿。export的必須有名字创淡;export default對應(yīng)的import和export對應(yīng)的import有所區(qū)別(其中test是導(dǎo)出模塊所在的JS文件名),如:
export default const a = 1; => import a from 'test'
export const a = 1; => import {a} from 'test'
兩者在import時都可以取別名南吮,如把導(dǎo)入的a取名為b:
export default對應(yīng)的取別名方式:import b from 'test'
export對應(yīng)的取別名方式:import {a as b} from 'test'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琳彩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子部凑,更是在濱河造成了極大的恐慌露乏,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涂邀,死亡現(xiàn)場離奇詭異瘟仿,居然都是意外死亡,警方通過查閱死者的電腦和手機必孤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門猾骡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敷搪,你說我怎么就攤上這事兴想。” “怎么了赡勘?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵嫂便,是天一觀的道長。 經(jīng)常有香客問我闸与,道長毙替,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任践樱,我火速辦了婚禮厂画,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拷邢。我一直安慰自己袱院,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忽洛,像睡著了一般腻惠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上欲虚,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天集灌,我揣著相機與錄音,去河邊找鬼复哆。 笑死欣喧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梯找。 我是一名探鬼主播续誉,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼初肉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饰躲,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤牙咏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘹裂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妄壶,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年寄狼,在試婚紗的時候發(fā)現(xiàn)自己被綠了丁寄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡泊愧,死狀恐怖伊磺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情删咱,我是刑警寧澤屑埋,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站痰滋,受9級特大地震影響摘能,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敲街,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一团搞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧多艇,春花似錦逻恐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萧豆。三九已至,卻和暖如春昏名,著一層夾襖步出監(jiān)牢的瞬間涮雷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工轻局, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洪鸭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓仑扑,卻偏偏與公主長得像览爵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子镇饮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361