OBJUI

module.exports、export default 和 export 详解

2024-10-31 14:43:19 583

module.exportsexport default 和 export 是JavaScript中用于导出模块内容的三种不同方式,它们分别属于不同的模块系统。以下是它们之间的主要区别:


1. 所属模块系统

  • module.exports 和 exports 属于CommonJS模块规范,这是Node.js采用的主要模块系统。
  • export default 和 export 属于ES6(ECMAScript 2015)模块规范,是JavaScript语言标准的一部分。

2. 导出方式

  • module.exports

    • 用于导出模块中的单个对象或函数。
    • 可以是任何JavaScript对象、函数、类等。
    • 使用require函数在其他模块中导入。
  • export default

    • 用于导出模块中的默认成员。
    • 每个模块只能有一个默认导出。
    • 导入时不需要使用大括号{},并且可以使用任意名称。
    • 通常用于导出单个函数、类或对象。
  • export

    • 用于导出模块中的命名成员。
    • 可以导出多个成员,每个成员都有自己的名称。
    • 导入时需要使用大括号{},并且必须使用原始名称或别名。

3. 导入方式

  • require(与module.exports配合使用):

    • 用于导入CommonJS模块。
    • 语法:const moduleName = require('modulePath');
  • import(与exportexport default配合使用):

    • 用于导入ES6模块。
    • 导入默认导出:import defaultName from 'modulePath';
    • 导入命名导出:import { memberName1, memberName2 } from 'modulePath';
    • 导入所有成员(命名空间导入):import * as moduleName from 'modulePath';

module.exports示例

文件:math.js

// 定义一个数学运算对象  
var MATH = {  
    pi: 3.14,  
    e: 2.72,  
    add: function(a, b) {  
        return a + b;  
    }  
};  
  

// 使用 module.exports 导出这个对象
module.exports = MATH;

文件app.js

// 使用 require 导入 math.js 模块导出的内容
var MATH = require('./math.js');

console.log(MATH.pi); // 输出: 3.14
console.log(MATH.add(2, 3)); // 输出: 5


export default 示例

math.js

// 定义一个默认导出的函数
export default function add(a, b) {
return a + b;
}
// 使用 import 导入 math.js 模块的默认导出内容,并命名为 add
import add from './math.js';

console.log(add(2, 3)); // 输出: 5


export示例

// 定义并导出多个命名成员
export const pi = 3.14;
export const e = 2.72;

export function multiply(a, b) {
return a * b;
}

// 使用 import 导入 math.js 模块中导出的命名成员
import { pi, multiply } from './math.js';

console.log(pi); // 输出: 3.14
console.log(multiply(2, 3)); // 输出: 6


更多精彩,请关注公众号

微信公众号