module.exports和exports的区别
时间: 2023-05-02 15:05:25 浏览: 82
module.exports和exports是node.js中用于导出模块的两种方式。它们的区别在于module.exports是真正的导出对象,而exports只是一个指向module.exports的变量。如果你只是想导出一个对象或一个函数,使用exports是完全可以的。但是,如果你想替换整个导出对象,则必须使用module.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`的联系,所以最终导出的模块仍然是一个空对象`{}`。
iconv = module.exports;和 module.exports=iconv的区别
这两行代码的作用是将iconv模块的exports对象设置为module.exports对象,区别在于设置的对象不同。第一行代码将exports对象设置为iconv对象,第二行代码将module.exports对象设置为iconv对象。在大多数情况下,这两个对象会被混用,因为它们都可以用来导出模块中的函数和变量。但是,当使用require()函数来加载模块时,会返回module.exports对象,而不是exports对象。因此,如果想要导出整个模块,就应该将module.exports对象设置为要导出的对象。
阅读全文