模塊是一個表示當前模塊的純 JavaScript 對象。它對於每個模塊來說都是本地的,也是私有的。它有出口屬性是一個普通的 JavaScript 變量,設置為模塊.導出。在文件末尾,Node.js 返回module.exports到所需的函數。
關於模塊.導出:
當我們想要將單個類/變量/函數從一個模塊導出到另一個模塊時,我們使用module.exports.
例子:創建兩個文件calculator.js和operation.js並從中導出算術類calculator.js到operation.js使用module.exports方法。在這裏,我們創建了一個 Arithmetic 類並使用導出整個類module.exports.
文件名:calculator.js
Javascript
class Arithmetic {
constructor(a, b) {
this.a = a;
this.b = b;
}
add() {
return this.a + this.b;
}
subtract() {
return this.a - this.b;
}
multiply() {
return this.a * this.b;
}
divide() {
if (this.b != 0) {
return this.a / this.b;
}
return "divided by zero !!!!";
}
};
module.exports = Arithmetic;
文件名:operation.js
Javascript
const Arithmetic = require('./calculator.js');
const op = new Arithmetic(100,40);
console.log(`Addition -> ${op.add()}`);
console.log(`subtraction -> ${op.subtract()}`);
console.log(`Multiplication -> ${op.multiply()}`);
console.log(`Division -> ${op.divide()}`);
使用以下命令運行operation.js 文件:
node operation.js
輸出:
使用 module.exports
關於出口:
當我們想要將多個變量/函數從一個模塊導出到另一個模塊時,我們使用導出。
例子:創建兩個文件calculator.js和operation.js並從中導出多個函數calculator.js文件。
文件名:calculator.js
Javascript
exports.add = (a, b) => a + b;
exports.subtract = (a, b) => a - b;
exports.multiply = (a, b) => a * b;
exports.divide = (a, b) => {
if (b != 0) {
return a / b;
}
return `Divided by zero !!!`;
}
文件名:operation.js
Javascript
const Arithmetic = require('./calculator.js');
console.log(`Addition -> ${Arithmetic.add(100,40)}`);
console.log(`subtraction -> ${Arithmetic.subtract(100,40)}`);
console.log(`Multiplication -> ${Arithmetic.multiply(100,40)}`);
console.log(`Division -> ${Arithmetic.divide(100,40)}`);
使用以下命令運行operation.js 文件:
node operation.js
輸出:
使用導出
module.exports 和導出之間的主要區別:
S.no |
Module.exports |
Exports |
---|---|---|
1 |
當我們想要將單個類/變量/函數從一個模塊導出到另一個模塊時,我們使用module.exports方式。 | 當我們想要將多個變量/函數從一個模塊導出到另一個模塊時,我們使用出口方式。 |
2. |
它是從 require() 調用返回的對象引用。 | 出口require() 不返回。這隻是一個參考module.exports. |
相關用法
- Node.js module.exports用法及代碼示例
- Node.js module.builtinModules用法及代碼示例
- Node.js module.createRequire(filename)用法及代碼示例
- Node.js module.syncBuiltinESMExports()用法及代碼示例
- Node.js urlObject.auth()用法及代碼示例
- Node.js process.env()用法及代碼示例
- Node.js process.argv0()用法及代碼示例
- Node.js process.argv()用法及代碼示例
- Node.js process.arch()用法及代碼示例
- Node.js Decipher.final()用法及代碼示例
- Node.js crypto.createDiffieHellman()用法及代碼示例
- Node.js v8.deserializer.readHeader()用法及代碼示例
- Node.js v8.deserializer.readRawBytes()用法及代碼示例
- Node.js v8.deserializer.readUint32()用法及代碼示例
- Node.js v8.deserializer.readUint64()用法及代碼示例
- Node.js v8.deserializer.readValue()用法及代碼示例
- Node.js v8.serializer.releaseBuffer()用法及代碼示例
- Node.js v8.serializer.writeDouble()用法及代碼示例
- Node.js v8.serializer.writeHeader()用法及代碼示例
- Node.js v8.serializer.writeRawBytes()用法及代碼示例
- Node.js v8.serializer.writeUint32()用法及代碼示例
- Node.js v8.serializer.writeUint64()用法及代碼示例
- Node.js v8.serializer.writeValue()用法及代碼示例
- Node.js Buffer.allocUnsafe()用法及代碼示例
- Node.js Buffer.allocUnsafeSlow()用法及代碼示例
注:本文由純淨天空篩選整理自AStream26大神的英文原創作品 Difference between module.exports and exports in Node.js。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。