module.exports和exports有啥区别
时间: 2023-12-12 12:24:51 浏览: 71
在Node.js的模块系统中,`module.exports`和`exports`是用于导出模块的两个对象。它们的主要区别在于它们的引用关系和导出方式。
1. `module.exports`是一个完全导出的对象,可以通过赋值来改变导出的内容。当一个模块被导入时,实际上是导入了`module.exports`指向的对象。如果你希望导出一个单一的对象或者一个构造函数,你可以直接给`module.exports`赋值。例如,`module.exports = { foo: 'bar' }`会导出一个包含`foo`属性的对象。
2. `exports`是`module.exports`的一个引用。在模块加载时,`exports`指向了`module.exports`。当你直接给`exports`赋值时,它只是改变了`exports`的引用,而不会影响`module.exports`的指向。因此,如果你想给`exports`赋值来导出内容,你需要在最后使用`module.exports`来确保正确导出。例如,`exports.foo = 'bar'; module.exports = exports`会导出一个包含`foo`属性的对象。
总结起来,`module.exports`是导出的主要方式,而`exports`只是它的一个引用。对于简单的导出场景,你可以直接使用`exports`,但对于复杂的导出场景,你应该使用`module.exports`来确保正确导出。
: https://juejin.cn/post/6844904016195206157
: https://blog.csdn.net/u014042066/article/details/105982774
: https://www.jianshu.com/p/1a5c6d2625e0
阅读全文