nodejs中module.exports 和exports区别
时间: 2023-12-29 10:26:13 浏览: 103
在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`的联系,所以最终导出的模块仍然是一个空对象`{}`。
阅读全文