nodejs模块暴露数据的方式,和引入(导入方式)方式

在 Node.js 中,模块之间通过 模块导出(exports)模块导入(require 或 ESModule 的 import) 来进行数据和功能的共享。下面我详细总结一下两种主要的模块系统:


一、CommonJS 模块(Node.js 默认使用方式)

✅ 模块导出方式

使用 module.exportsexports 导出数据、函数或对象:

1. 导出单个值(函数/对象/变量):
// math.js
function add(a, b) {
  return a + b;
}
module.exports = add;
2. 导出多个内容:
// math.js
function add(a, b) {
  return a + b;
}
function subtract(a, b) {
  return a - b;
}
module.exports = {
  add,
  subtract
};

也可以使用 exports(注意不能直接给 exports 赋新值):

// math.js
exports.add = function(a, b) { return a + b; };
exports.subtract = function(a, b) { return a - b; };

✅ 模块引入方式

使用 require 引入模块:

// app.js
const math = require('./math');

console.log(math.add(2, 3)); // 5

如果模块只导出一个函数或对象,可以直接使用:

const add = require('./math');
console.log(add(2, 3)); // 5

二、ESModule 模块(现代方式,需使用 .mjs 后缀,或在 package.json 设置 "type": "module"

✅ 模块导出方式

1. 默认导出:
// math.mjs
export default function add(a, b) {
  return a + b;
}
2. 命名导出:
// math.mjs
export function add(a, b) {
  return a + b;
}
export function subtract(a, b) {
  return a - b;
}

也可以统一导出:

function add(a, b) { return a + b; }
function subtract(a, b) { return a - b; }
export { add, subtract };

✅ 模块引入方式

1. 导入默认导出:
// app.mjs
import add from './math.mjs';
console.log(add(2, 3));
2. 导入命名导出:
// app.mjs
import { add, subtract } from './math.mjs';
console.log(add(2, 3));

三、两者混用说明(❗不推荐)

虽然 Node.js 支持 CommonJS 和 ESModule,但混用可能出现问题:

  • CommonJS 可以引入 ESModule,但必须是异步的 import()
  • ESModule 引入 CommonJS 时,只能拿到整个 module.exports 对象。

四、总结对比

特性CommonJS (require)ESModule (import)
默认支持✅ Node.js 默认支持❌ 需配置或使用 .mjs
是否同步✅ 同步❌ 异步
导出方式module.exports, exportsexport, export default
引入方式require()import
应用场景传统 Node.js 项目现代项目、前后端统一、Tree Shaking

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻小胖

如果觉得不错就给点赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值