exports 和 module.exports 的區(qū)別

要理解這兩個(gè)之間的區(qū)別確實(shí)對(duì)于剛接觸Nodejs的小伙伴來(lái)說(shuō)比較的難理解渔期,去外面面試nodejs崗位的時(shí)候一般在筆試題里也會(huì)有問(wèn)到exports 和 module.exports 的區(qū)別,那怎么才能更好的理解這兩者之間的區(qū)別,我也網(wǎng)上翻看了一下一些技術(shù)大牛自己的解釋粒梦,然后綜合了一下土童,自己也不斷的測(cè)試之后也有了一點(diǎn)自己的理解。
寫的比較詳細(xì)的是nswbmw寫的
https://cnodejs.org/topic/5231a630101e574521e45ef8
他把兩者之間的區(qū)別歸結(jié)為了3點(diǎn)
1.exports 是指向的 module.exports 的引用
2.module.exports 初始值為一個(gè)空對(duì)象 {}弯屈,所以 exports 初始值也是 {}
3.require() 返回的是 module.exports 而不是 exports
那怎么樣來(lái)理解呢
比如A是一個(gè)對(duì)象蜗帜,把A賦給B,B就是對(duì)A的引用资厉,即A和B指向同一個(gè)地址厅缺,如果修改了B,那么A也會(huì)修改宴偿,所以exports 是指向的 module.exports 的引用
utils.js

module.exports.name = "1";
exports.name = module.exports.name;
exports.name = "2";

這樣調(diào)用的時(shí)候

var utils = require("./utils.js");
console.log(utils.name);

utils.name其實(shí)就是對(duì)module.exports.name的調(diào)用湘捎,只是因?yàn)閑xports.name修改了內(nèi)容中的值,所以module.exports.name的值也發(fā)生了變化
再來(lái)看一個(gè)例子

exports.name = "2";

這時(shí)窄刘,因?yàn)闆](méi)有初始化module.exports窥妇,所以module.exports是一個(gè)空的對(duì)象{},exports也是一個(gè)空的對(duì)象娩践,所以直接賦值之后其實(shí)就是給module.exports對(duì)象賦值了活翩,所以u(píng)tils.name其實(shí)調(diào)用的還是module.exports.name
再來(lái)看一個(gè)例子

exports = function(){
    console.log("hello");
}
var utils = require("./utils.js");
utils();

這時(shí),服務(wù)器會(huì)報(bào)錯(cuò)翻伺,提示utils不是一個(gè)有效的功能函數(shù)材泄,這就是因?yàn)閞equire() 返回的是 module.exports 而不是 export是空的,只要把utils改成

module.exports = function(){
    console.log("hello");
}

就對(duì)了吨岭,那如果要用exports拉宗,可以直接給exports對(duì)象定義一個(gè)function

exports.sayHello = function(){
    console.log("hello");
}

然后通過(guò)function來(lái)調(diào)用

var utils = require("./utils.js");
utils.sayHello();

最后再來(lái)看一個(gè)例子,把對(duì)象直接賦給module.exports,這樣就可以直接通過(guò)new一個(gè)對(duì)象來(lái)調(diào)用

A = function(){
    console.log("構(gòu)造函數(shù)");
    this.name = "hello";
}

A.prototype.sayHello = function(){
    console.log(this.name);
}

module.exports = A;
var u = new utils();
u.sayHello();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旦事,一起剝皮案震驚了整個(gè)濱河市魁巩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌族檬,老刑警劉巖歪赢,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異单料,居然都是意外死亡埋凯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門扫尖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)白对,“玉大人,你說(shuō)我怎么就攤上這事换怖∷δ眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵沉颂,是天一觀的道長(zhǎng)条摸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)铸屉,這世上最難降的妖魔是什么钉蒲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮彻坛,結(jié)果婚禮上顷啼,老公的妹妹穿的比我還像新娘。我一直安慰自己昌屉,他們只是感情好钙蒙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著间驮,像睡著了一般躬厌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜻牢,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天烤咧,我揣著相機(jī)與錄音,去河邊找鬼抢呆。 笑死煮嫌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抱虐。 我是一名探鬼主播昌阿,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了懦冰?” 一聲冷哼從身側(cè)響起灶轰,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刷钢,沒(méi)想到半個(gè)月后笋颤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡内地,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年伴澄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阱缓。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡非凌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荆针,到底是詐尸還是另有隱情敞嗡,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布航背,位于F島的核電站喉悴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏玖媚。R本人自食惡果不足惜粥惧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望最盅。 院中可真熱鬧,春花似錦起惕、人聲如沸涡贱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)问词。三九已至,卻和暖如春嘀粱,著一層夾襖步出監(jiān)牢的瞬間激挪,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工锋叨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垄分,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓娃磺,卻偏偏與公主長(zhǎng)得像薄湿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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