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

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

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

今天看了下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按照第二種方式寫成下面這樣就會出錯:

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

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

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

 

來分析一下出錯的原因。

由于最開始的時候,exportsmodule.exports都指向同一個對象。

第一種方式,是在給這個空對象{}添加屬性,又因為module.exports也是指向這個對象的,所以最終require方法返回的module.exports是指向了這個具有log方法的對象的,可以引用到模塊。

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

但是最后那種寫法是讓exports指向一片新的內存空間,module.exports指向的仍然還是{},那么最終require方法是將module.exports返回,所以會導致報錯,說s不是一個function。

所以:

請牢記:require方法返回的是module.exports!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

    node結合swig渲染摸板的方法

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

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

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

    Node.js基礎模塊babel使用詳解

    這篇文章主要介紹了Node.js基礎模塊babel使用詳解,babel是由一系列的組件構成,所以我們在開發(fā)過程中,要從自行配置組件來開始使用babel的功能
    2022-06-06
  • 如何搭建Node.js服務器

    如何搭建Node.js服務器

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

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

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

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

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

    Nodejs項目打包部署兩種方式總結

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

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

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

最新評論