返回

ES6模块化之export与CommonJS模块化之module.exports对比详解

前端

ES6模块化中的export

在ES6中,使用export来导出模块。export可以导出变量、函数、类等。被导出的变量、函数、类等在其他模块中可以通过import关键字来导入。

CommonJS模块化中的module.exports

在CommonJS中,使用module.exports对象来导出模块。module.exports对象可以导出变量、函数、类等。被导出的变量、函数、类等在其他模块中可以通过require()函数来导入。

export和module.exports的区别

export和module.exports是两种不同的模块导出方式。export是ES6中引入的模块导出方式,而module.exports是CommonJS中引入的模块导出方式。

export和module.exports之间最主要的区别是,export只能导出变量、函数、类等,而module.exports可以导出任何类型的数据,包括对象、数组等。

代码示例

ES6模块化示例

// 定义一个名为“math.js”的模块
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// 在另一个模块中导入“math.js”模块
import { add, subtract } from "./math.js";

// 使用导入的变量和函数
const result = add(1, 2);
console.log(result); // 输出: 3

CommonJS模块化示例

// 定义一个名为“math.js”的模块
const math = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
};

// 将“math”模块导出
module.exports = math;

// 在另一个模块中导入“math.js”模块
const math = require("./math.js");

// 使用导入的变量和函数
const result = math.add(1, 2);
console.log(result); // 输出: 3

总结

export和module.exports都是模块导出方式,但它们之间存在一些差异。export只能导出变量、函数、类等,而module.exports可以导出任何类型的数据。此外,export是ES6中引入的模块导出方式,而module.exports是CommonJS中引入的模块导出方式。

在实际开发中,可以使用ES6模块化或CommonJS模块化来实现模块的导入和导出。ES6模块化是更现代的模块化方式,但它只支持在现代浏览器和Node.js中使用。CommonJS模块化是更传统的模块化方式,但它支持在各种环境中使用。