返回

在 Node.js 中,module.exports 与 exports 的用法和区别

前端

module.exports 与 exports 的区别

在 Node.js 中,每个模块都有一个 module 对象,该对象包含有关当前模块的一些信息,包括导出对象。

  • module.exports 是 module 对象的属性,它是一个指向导出对象的指针。当您使用 module.exports 导出一个值或对象时,该值或对象将被分配给导出的对象。
  • exports 也是 module 对象的属性,它是一个指向导出对象的引用。然而,与 module.exports 不同,exports 是一个实际的对象,您可以直接对其进行修改。

何时使用 module.exports 和 exports

一般来说,您应该使用 module.exports 导出值或对象。这是因为 module.exports 是一个指针,它不会修改导出的对象。这可以防止您意外地修改导出的对象,并确保导出的对象始终保持与模块中定义的对象相同。

只有在您需要修改导出的对象时,才应该使用 exports。例如,如果您需要在模块中多次导出相同的值或对象,则可以使用 exports。

使用 module.exports 和 exports 的示例

以下是一些使用 module.exports 和 exports 的示例:

// 定义一个模块
const module1 = {
  // 使用 module.exports 导出一个值
  value: 10,

  // 使用 exports 导出一个对象
  object: {
    name: 'John Doe',
    age: 30
  }
};

// 导入模块
const module2 = require('./module1');

// 使用导入的模块
console.log(module2.value); // 10
console.log(module2.object); // { name: 'John Doe', age: 30 }

在上面的示例中,module1 模块使用 module.exports 导出一个值,并使用 exports 导出一个对象。module2 模块导入 module1 模块,并使用导入的模块。

总结

module.exports 与 exports 是 Node.js 中用于导出值或对象到另一个模块的两个相关概念。module.exports 是一个指向导出对象的指针,而 exports 是一个实际的对象。一般来说,您应该使用 module.exports 导出值或对象。只有在您需要修改导出的对象时,才应该使用 exports。