全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 5 分钟 ✍️ juanwangdev

Node.js exports 导出对象

exports 是 Node.js 模块系统提供的导出简写,用于暴露模块的公共接口。

基本用法

JavaScript
// 导出单个属性
exports.name = 'utils';
exports.version = '1.0.0';

exports.add = function(a, b) {
  return a + b;
};

exports.subtract = (a, b) => a - b;

exports 与 module.exports 的关系

JavaScript
// exports 是 module.exports 的引用
console.log(exports === module.exports); // true

// 初始状态
// module.exports = {}
// exports = module.exports

正确用法

JavaScript
// ✅ 正确:添加属性
exports.fn1 = () => console.log('fn1');
exports.fn2 = () => console.log('fn2');

// 等同于
module.exports.fn1 = () => console.log('fn1');
module.exports.fn2 = () => console.log('fn2');

错误用法

JavaScript
// ❌ 错误:重新赋值会断开引用
exports = {
  name: 'utils',
  fn: () => console.log('fn')
};
// 这样不会生效,因为 exports 不再指向 module.exports

// ❌ 错误:exports 指向新对象
exports = function() {
  console.log('utils');
};
// 同样不会生效

导出对象的最佳实践

JavaScript
// 需要导出整个对象或函数时,使用 module.exports

// 导出构造函数
module.exports = class User {
  constructor(name) {
    this.name = name;
  }
};

// 导出单个函数
module.exports = function add(a, b) {
  return a + b;
};

// 导出完整对象
module.exports = {
  name: 'utils',
  add: (a, b) => a + b,
  subtract: (a, b) => a - b
};

混合使用

JavaScript
// 可以混合使用
module.exports = {
  name: 'utils'
};

// ❌ 错误:此时 exports 已断开引用
exports.version = '1.0.0'; // 不会生效

对比总结

方式用途示例
exports.xxx添加单个属性exports.add = fn
module.exports导出整个对象module.exports = { ... }

记住:exports 只是 module.exports 的引用简写,导出整体时必须用 module.exports。

要点总结

  • exports 是 module.exports 的引用
  • 只能用 exports 添加属性,不能重新赋值
  • 导出函数或类时使用 module.exports
  • 同一模块中避免混用两种方式

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js console 控制台对象
下一篇 → Node.js global 全局对象
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库