exports 和module.exports的区别
时间: 2023-06-06 16:05:05 浏览: 81
exports 是 module.exports 的一个引用,它们最初都指向同一个对象。但是,如果 exports 被重新分配到一个新的对象,那么它将不再指向 module.exports,而仅仅是一个普通的对象而已。所以,如果你想要暴露一个函数或者类,你应该把它们赋值给 module.exports 而不是 exports。
相关问题
exports 和 module.exports 区别?
在Node.js中,exports和module.exports都是用于导出模块的对象。它们之间的区别在于:
1. exports是module.exports的一个引用:在模块中,exports实际上是module.exports的一个引用。当你给exports对象添加属性时,实际上是在修改module.exports对象。例如,当你写下`exports.foo = 'bar'`时,相当于写下了`module.exports.foo = 'bar'`。
2. module.exports可以直接赋值:与exports不同,module.exports可以直接赋值为一个新的对象或者一个函数。这意味着你可以完全替换导出的对象。例如,你可以写下`module.exports = { foo: 'bar' }`来导出一个包含属性foo的新对象。
综上所述,exports和module.exports的区别在于对module.exports的修改方式不同。如果你只是想向外部导出一些属性或方法,可以使用exports对象;如果你想要替换整个导出对象,应该使用module.exports。
exports 和 module.exports
在 Node.js 中,每个模块都有一个 module 对象和一个 exports 对象。 exports 对象是 module.exports 的一个引用,最初默认为空对象{}。如果我们想要将一个模块的一个函数或对象暴露出去,我们可以将其添加到 exports 对象中,如下所示:
```javascript
// module.js
function add(a, b) {
return a + b;
}
exports.add = add;
```
在另一个文件中,我们可以通过 require 函数引入该模块并使用 exports 对象中的函数:
```javascript
// app.js
const module = require('./module.js');
console.log(module.add(2, 3)); // 输出 5
```
如果我们想要将整个模块暴露出去,我们可以将 module.exports 直接赋值为一个函数或对象,如下所示:
```javascript
// module.js
module.exports = {
add(a, b) {
return a + b;
},
multiply(a, b) {
return a * b;
}
};
```
在另一个文件中,我们可以通过 require 函数引入该模块并直接使用该模块导出的对象或函数:
```javascript
// app.js
const module = require('./module.js');
console.log(module.add(2, 3)); // 输出 5
console.log(module.multiply(2, 3)); // 输出 6
```
阅读全文