module.exports和exports区别
时间: 2023-04-29 14:01:32 浏览: 119
module.exports和exports都是Node.js中用于导出模块的关键字,但是它们之间有一些区别。
module.exports是一个对象,可以通过给它赋值来导出模块。例如:
```
module.exports = {
foo: 'bar'
};
```
exports是module.exports的一个引用,可以通过给它添加属性来导出模块。例如:
```
exports.foo = 'bar';
```
但是,如果你给exports赋值一个新的对象,它将不再指向module.exports,因此不会导出模块。例如:
```
exports = {
foo: 'bar'
};
```
因此,如果你想导出一个对象,最好使用module.exports。如果你想导出一个函数或一个类,可以使用exports。
相关问题
module.exports 和exports区别
在Sea.js中,module.exports和exports都是用于暴露模块成员的方式,但它们之间有一些区别。
1. module.exports是一个指向当前模块导出对象的引用,它是真正用于导出模块成员的对象。当我们使用module.exports时,我们可以直接给它赋值一个对象、函数或其他任何类型的值,这样就可以将该值作为模块的导出成员。
2. exports是module.exports的一个引用,它是一个空对象,最初指向module.exports。当我们使用exports时,实际上是在给module.exports添加属性。例如,当我们使用exports.doSomething = function() {}时,实际上是在给module.exports添加了一个名为doSomething的属性,并将其值设置为一个函数。
3. 由于exports是module.exports的引用,所以当我们给exports赋值一个新的对象时,它将不再指向module.exports,而是指向新的对象。这意味着,如果我们只使用exports来导出模块成员,而不使用module.exports,那么最终导出的结果将是一个空对象,而不是我们期望的成员。
总结来说,module.exports是真正用于导出模块成员的对象,而exports只是module.exports的一个引用。如果我们只使用exports来导出模块成员,那么最终导出的结果将是一个空对象。
nodejs中module.exports 和exports区别
在Node.js中,`module.exports`和`exports`都是用于导出模块的对象。它们之间的关系是`exports`是`module.exports`的一个引用。但是,它们的使用方式有一些区别。
`module.exports`是真正导出模块的对象,它是模块系统默认导出的对象。当我们使用`require`函数导入一个模块时,实际上是导入了`module.exports`对象。
`exports`是`module.exports`的一个引用,它是一个空对象`{}`。当我们直接给`exports`对象添加属性时,实际上是给`module.exports`对象添加属性。但是,如果我们将`exports`变量指向一个新的对象,就会切断`exports`与`module.exports`之间的联系,此时`module.exports`仍然是一个空对象。
下面是一个示例,演示了`module.exports`和`exports`的区别:
```javascript
// utils.js
let a = 100;
console.log(module.exports); // 输出:{}
console.log(exports); // 输出:{}
exports.a = 200; // 给module.exports添加属性
exports = '指向其他内存区'; // 切断exports与module.exports的联系
// test.js
var a = require('/utils');
console.log(a); // 输出:{a: 200}
```
在上面的示例中,`exports.a = 200`实际上是给`module.exports`添加了一个属性。而`exports = '指向其他内存区'`将`exports`变量指向了一个新的对象,切断了与`module.exports`的联系,所以最终导出的模块仍然是一个空对象`{}`。
阅读全文