首页/ 学科题库/ nodejs/ Node.js exports 导出对象
nodejs 实战教程

Node.js exports 导出对象

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
  • 同一模块中避免混用两种方式
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 Node.js module 模块对象 下一篇 → Node.js require 模块加载函数