欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Node.js中exports和module.exports的區(qū)別

 更新時(shí)間:2017年04月19日 14:19:15   作者:村里有個(gè)小芳是姑娘  
這篇文章主要介紹了詳解Node.js中exports和module.exports的區(qū)別,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

今天看了下node.js的require方法的源碼,終于搞清楚exports和module.exports的區(qū)別了。

我們知道,node.js的模塊暴露有兩種方法。

1. 方式一:用exports

//a.js

 exports.log =function (str) {
  console.log(str);
}
//b.js

 var s = require("./a");
 s.log("哈哈哈哈");

2. 方式二:用module.exports

//a.js
 module.exports = function (str) {
    console.log(str);
 }

//b.js
 var s = require("./a");
 s("嘻嘻嘻嘻");

如果將第一種方式的exports按照第二種方式寫成下面這樣就會(huì)出錯(cuò):

//a.js
 exports = function (str) {
  console.log(str);
}
//b.js

 var s = require("./a");
 s("哈哈哈哈");

exportsmodule.exports的初始值指向的是空對(duì)象,即{}。從源碼可以看到,其實(shí)模塊的require方法實(shí)質(zhì)上是調(diào)用了_load方法,而_load方法,最終返回的是module.exports

 

來(lái)分析一下出錯(cuò)的原因。

由于最開始的時(shí)候,exportsmodule.exports都指向同一個(gè)對(duì)象。

第一種方式,是在給這個(gè)空對(duì)象{}添加屬性,又因?yàn)?code>module.exports也是指向這個(gè)對(duì)象的,所以最終require方法返回的module.exports是指向了這個(gè)具有log方法的對(duì)象的,可以引用到模塊。

第二種方式是讓module.exports指向一片新的內(nèi)存空間,exports指向的仍然是{},但是由于require方法返回的是module.exports,所以最終也能引入模塊。

但是最后那種寫法是讓exports指向一片新的內(nèi)存空間,module.exports指向的仍然還是{},那么最終require方法是將module.exports返回,所以會(huì)導(dǎo)致報(bào)錯(cuò),說(shuō)s不是一個(gè)function。

所以:

請(qǐng)牢記:require方法返回的是module.exports

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Express中全局中間件與局部中間件的使用

    Express中全局中間件與局部中間件的使用

    本文介紹了Express框架中的全局中間件與局部中間件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • npm?install的--save和--save-dev使用說(shuō)明(推薦)

    npm?install的--save和--save-dev使用說(shuō)明(推薦)

    這篇文章主要介紹了npm?install的--save和--save-dev使用說(shuō)明,文中給大家提到了各個(gè)命令的區(qū)別及各種安裝參數(shù)的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • node結(jié)合swig渲染摸板的方法

    node結(jié)合swig渲染摸板的方法

    本篇文章主要介紹了node結(jié)合swig渲染摸板的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 詳解Node.js中單線程限制的有效解決方法

    詳解Node.js中單線程限制的有效解決方法

    Node.js?是一個(gè)基于事件驅(qū)動(dòng)、非阻塞?I/O?模型的?JavaScript?運(yùn)行時(shí)環(huán)境,特別適合構(gòu)建高并發(fā)的網(wǎng)絡(luò)應(yīng)用,本文介紹了幾種解決?Node.js單線程限制的方法,希望對(duì)大家有所幫助
    2024-12-12
  • Node.js基礎(chǔ)模塊babel使用詳解

    Node.js基礎(chǔ)模塊babel使用詳解

    這篇文章主要介紹了Node.js基礎(chǔ)模塊babel使用詳解,babel是由一系列的組件構(gòu)成,所以我們?cè)陂_發(fā)過(guò)程中,要從自行配置組件來(lái)開始使用babel的功能
    2022-06-06
  • 如何搭建Node.js服務(wù)器

    如何搭建Node.js服務(wù)器

    本文介紹如何搭建Node.js服務(wù)器,涵蓋HTTP路由、靜態(tài)資源處理(異步文件操作、目錄索引、Content-Type設(shè)置)、GET/POST參數(shù)解析及事件監(jiān)聽,各模塊代碼獨(dú)立運(yùn)行并附注釋,對(duì)node.js服務(wù)器搭建感興趣的朋友一起看看吧
    2025-06-06
  • 為什么使用koa2搭建微信第三方公眾平臺(tái)的原因

    為什么使用koa2搭建微信第三方公眾平臺(tái)的原因

    這篇文章主要介紹了為什么使用koa2搭建微信第三方公眾平臺(tái)的原因,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享

    基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享

    下面小編就為大家分享一篇基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Nodejs項(xiàng)目打包部署兩種方式總結(jié)

    Nodejs項(xiàng)目打包部署兩種方式總結(jié)

    這篇文章主要介紹了Nodejs項(xiàng)目打包部署兩種方式的相關(guān)資料,兩種方式分別是使用PM2和pkg,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • node.js抓取并分析網(wǎng)頁(yè)內(nèi)容有無(wú)特殊內(nèi)容的js文件

    node.js抓取并分析網(wǎng)頁(yè)內(nèi)容有無(wú)特殊內(nèi)容的js文件

    nodejs獲取網(wǎng)頁(yè)內(nèi)容綁定data事件,獲取到的數(shù)據(jù)會(huì)分幾次相應(yīng),如果想全局內(nèi)容匹配,需要等待請(qǐng)求結(jié)束,在end結(jié)束事件里把累積起來(lái)的全局?jǐn)?shù)據(jù)進(jìn)行操作,本文給大家介紹node.js抓取并分析網(wǎng)頁(yè)內(nèi)容有無(wú)特殊內(nèi)容的js文件,需要的朋友參考下
    2015-11-11

最新評(píng)論