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

Node.js中exports與module.exports區(qū)別

 更新時間:2025年07月08日 09:17:59   作者:覓_  
本文主要介紹了Node.js中exports與module.exports區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在 Node.js 中,exports 和 module.exports 都是用于模塊導出的對象,但它們在引用關系和使用場景上有重要區(qū)別:

核心區(qū)別總結

特性 exports module.exports
本質 module.exports 的引用 模塊最終導出的真實對象
初始化關系 exports = module.exports (初始指向同一對象) 模塊實際導出的對象
直接賦值后果 斷開引用(導出失效) 正確覆蓋導出內容
適用場景 添加多個屬性/方法 導出任意類型(函數(shù)/類/對象等)

詳細解釋

初始關系

Node.js 在編譯模塊時會隱式執(zhí)行:

var module = { exports: {} }; // 真實導出對象
var exports = module.exports; // 初始指向同一內存地址

此時 exports 是 module.exports 的快捷引用,兩者指向同一個空對象 {}。

正確用法

? 添加屬性(兩者等效)

// 方式一:使用 exports

exports.name = 'Alice';
exports.sayHi = () => 'Hello!';

// 方式二:使用 module.exports

module.exports.name = 'Bob';
module.exports.sayHi = () => 'Hi!';

?? 此時 exports 和 module.exports 仍指向同一對象,導出內容相同。

? 導出特殊類型(必須用 module.exports)

// 導出構造函數(shù)
module.exports = class Person { ... };

// 導出函數(shù)
module.exports = function() { ... };

// 導出原始值
module.exports = 'Hello World';

錯誤用法

? 直接給 exports 賦值(引用斷裂)

exports = { name: 'Charlie' }; // 錯誤!斷開與 module.exports 的鏈接

此時 exports 指向新對象,但模塊實際導出的是原始的 module.exports(仍是空對象 {})。

?? 關鍵注意事項

最終導出的是 module.exports
無論操作 exports 還是 module.exports,模塊最終返回的是 module.exports 的值。

賦值優(yōu)先級
若同時操作兩者,最后執(zhí)行的賦值決定導出結果:

exports.a = 1;         // 無效:被下一行覆蓋
module.exports = { b: 2 }; // 最終導出 { b: 2 }

?? 最佳實踐建議

場景 推薦方式
導出多個屬性/方法 exports.xxx = …
導出單一功能(函數(shù)/類/對象) module.exports = …
避免混淆 統(tǒng)一使用 module.exports

?? 代碼示例

正確導出函數(shù)

// ? 正確
module.exports = () => console.log('Imported!');

// ? 錯誤(exports 無法導出函數(shù))
exports = () => console.log('This will fail!');

混合使用案例

exports.name = 'Alice';  // 有效:添加屬性
module.exports.age = 30; // 有效:添加屬性

// 最終導出 { name: 'Alice', age: 30 }
exports.name = 'Bob';
module.exports = { age: 25 }; // 覆蓋之前的所有導出
// 最終導出 { age: 25 } (name 被丟棄)

?? 總結

使用 exports 添加屬性,用 module.exports 覆蓋導出對象。
永遠不要直接賦值 exports(exports = …)。
當需要導出非對象類型(函數(shù)、字符串等)時,必須使用 module.exports。
不確定時,統(tǒng)一使用 module.exports 可避免意外錯誤。
理解兩者引用關系的本質,能有效避免模塊導出時的常見陷阱!

  • exports返回的是模塊函數(shù)
  • module.exports返回的是 模塊對象本身

到此這篇關于Node.js中exports與module.exports區(qū)別的文章就介紹到這了,更多相關Node.js exports module.exports內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • NodeJS感知和控制自身進程的運行環(huán)境和狀態(tài)

    NodeJS感知和控制自身進程的運行環(huán)境和狀態(tài)

    NodeJS可以感知和控制自身進程的運行環(huán)境和狀態(tài),也可以創(chuàng)建子進程并與其協(xié)同工作,這使得NodeJS可以把多個程序組合在一起共同完成某項工作,并在其中充當膠水和調度器的作用,和進程管理相關的API單獨介紹起來比較枯燥,這里從一些典型的應用場景出發(fā)
    2024-01-01
  • koa2 用戶注冊、登錄校驗與加鹽加密的實現(xiàn)方法

    koa2 用戶注冊、登錄校驗與加鹽加密的實現(xiàn)方法

    這篇文章主要介紹了koa2 用戶注冊、登錄校驗與加鹽加密的實現(xiàn)方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • 如何使用Node.js判斷png圖片是否存在透明像素

    如何使用Node.js判斷png圖片是否存在透明像素

    這篇文章主要給大家介紹了關于如何使用Node.js判斷png圖片是否存在透明像素的相關資料,文中將實現(xiàn)的原理以及代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • nodejs連接mysql數(shù)據(jù)庫及基本知識點詳解

    nodejs連接mysql數(shù)據(jù)庫及基本知識點詳解

    這篇文章主要介紹了nodejs連接mysql數(shù)據(jù)庫,結合實例形式總結分析了nodejs連接與操作mysql數(shù)據(jù)庫的相關模板、配置及mysql數(shù)據(jù)庫查詢、添加數(shù)據(jù)等操作技巧,需要的朋友可以參考下
    2018-03-03
  • vscode安裝教程以及配置node.js環(huán)境全過程

    vscode安裝教程以及配置node.js環(huán)境全過程

    這篇文章主要給大家介紹了關于vscode安裝教程以及配置node.js環(huán)境的相關資料,VSCode是一款由微軟開發(fā)的輕量級編輯器,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • 詳解使用Nodejs內置加密模塊實現(xiàn)對等加密與解密

    詳解使用Nodejs內置加密模塊實現(xiàn)對等加密與解密

    這篇文章主要介紹了使用Nodejs內置加密模塊實現(xiàn)對等加密與解密,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • 解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?notarget?No?matching?version?found?for

    解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?

    這篇文章主要介紹了如何解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?notarget?No?matching?version?found?for,文中給出了詳細的解決方法,需要的朋友可以參考下
    2024-02-02
  • centos 上快速搭建ghost博客方法分享

    centos 上快速搭建ghost博客方法分享

    本文給大家分享的是如何在centos上快速搭建基于Node.js 構建的開源博客平臺ghost的方法,非常的實用,有需要的小伙伴可以參考下
    2018-05-05
  • NVM安裝nodejs的方法實用步驟

    NVM安裝nodejs的方法實用步驟

    安裝node的方式有很多種,本文主要介紹了NVM安裝nodejs的方法實用步驟,希望能幫助大家來解決問題,感興趣的小伙伴們可以參考一下
    2019-01-01
  • node.js中的buffer.Buffer.isEncoding方法使用說明

    node.js中的buffer.Buffer.isEncoding方法使用說明

    這篇文章主要介紹了node.js中的buffer.Buffer.isEncoding方法使用說明,本文介紹了buffer.Buffer.isEncoding的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12

最新評論