Node.js?中的?module.exports?與?exports區(qū)別介紹
介紹
module:每個模塊中都有module對象,存放了當前模塊相關(guān)的信息;module.exports:模塊導出的內(nèi)容;exports:默認情況下,exports和module.exports指向同一個對象。
示例
test.js
console.log('module', module)
console.log('module.exports', module.exports)
console.log('exports', exports)
console.log('module.exports === exports', module.exports === exports)控制臺執(zhí)行 node test.js,打印日志如下:
module Module {
id: '.',
path: 'E:\lin\webpack-learning\src\cjs\demo1',
exports: {},
filename: 'E:\lin\webpack-learning\src\cjs\demo1\test.js',
loaded: false,
children: [],
paths: [
'E:\lin\webpack-learning\src\cjs\demo1\node_modules',
'E:\lin\webpack-learning\src\cjs\node_modules',
'E:\lin\webpack-learning\src\node_modules',
'E:\lin\webpack-learning\node_modules',
'E:\lin\node_modules',
'E:\node_modules'
]
}
module.exports {}
exports {}
module.exports === exports true從源碼中理解

const exports = this.exports; const thisValue = exports; const module = this;
說明:exports 是 module.exports 的引用
通過示例理解
示例一
test1.js
exports.name = 'lin';
module.exports.age = 18;
console.log('module.exports', module.exports)
console.log('exports', exports)
console.log('module.exports === exports', module.exports === exports)index.js
const test = require('./test1')
console.log("test", test);控制臺執(zhí)行 node index.js,打印日志如下:
module.exports { name: 'lin', age: 18 }
exports { name: 'lin', age: 18 }
module.exports === exports true
test { name: 'lin', age: 18 }畫圖說明:

示例二
test2.js
module.exports.name = 'lin'
exports = {
name: 'myName',
age: 6
}
console.log('module.exports', module.exports)
console.log('exports', exports)
console.log('module.exports === exports', module.exports === exports)index.js 改為引入 test2.js 模塊
const test = require('./test2')
console.log("test", test);控制臺執(zhí)行 node index.js,打印日志如下:
module.exports { name: 'lin' }
exports { name: 'myName', age: 6 }
module.exports === exports false
test { name: 'lin' }畫圖說明:

示例三
test3.js
module.exports = {
name: 'lin',
age: 18
}
exports.name = "myName"
console.log('module.exports', module.exports)
console.log('exports', exports)
console.log('module.exports === exports', module.exports === exports)index.js 改為引入 test3.js 模塊
const test = require('./test3')
console.log("test", test);控制臺執(zhí)行 node index.js,打印日志如下:
module.exports { name: 'lin', age: 18 }
exports { name: 'myName' }
module.exports === exports false
test { name: 'lin', age: 18 } 畫圖說明:

示例四
test4.js
exports = {
name: 'lin',
age: 18
}
module.exports = exports
module.exports.job = 'FE'
console.log('module.exports', module.exports)
console.log('exports', exports)
console.log('module.exports === exports', module.exports === exports)index.js 改為引入 test4.js 模塊
const test = require('./test4')
console.log("test", test);控制臺執(zhí)行 node index.js,打印日志如下:
module.exports { name: 'lin', age: 18, job: 'FE' }
exports { name: 'lin', age: 18, job: 'FE' }
module.exports === exports true
test { name: 'lin', age: 18, job: 'FE' }畫圖說明:

小結(jié)
exports是module.exports的引用;- 對
exports和module.exports賦值時要格外注意,明確模塊導出的值; - 使用
require()導入模塊 A 時,導入的結(jié)果是模塊 A 中module.exports指向的值。
到此這篇關(guān)于Node.js 中的 module.exports 與 exports區(qū)別介紹的文章就介紹到這了,更多相關(guān)Node.js exports內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.JS發(fā)送http請求批量檢查文件中的網(wǎng)頁地址、服務是否有效可用
這篇文章主要介紹了Node.JS發(fā)送http請求批量檢查文件中的網(wǎng)頁地址、服務是否有效可用,本文通過實例代碼文字說明給大家講解的非常詳細,需要的朋友參考下2019-11-11
Ubuntu22.04系統(tǒng)下升級nodejs到v18版本
ubuntu默認安裝的nodejs版本比較老,要安裝到最新的,下面這篇文章主要給大家介紹了關(guān)于Ubuntu22.04系統(tǒng)下升級nodejs到v18版本的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-06-06
用C/C++來實現(xiàn) Node.js 的模塊(二)
上篇文章的主要內(nèi)容講訴了用C/C++來實現(xiàn) Node.js 的模塊,本文更深一步繼續(xù)探討這個問題,有需要的朋友可以參考下2014-09-09
解決npm?run?serve啟動報錯npm?ERR?Missing?script:"serve&q
這篇文章主要給大家介紹了關(guān)于解決npm?run?serve啟動報錯npm?ERR?Missing?script:"serve"的相關(guān)資料,這是最近開發(fā)中遇到的一個問題,文中通過圖文將解決辦法介紹的非常詳細,需要的朋友可以參考下2023-01-01

