node中模块规范commonJs 和 Es6中的模块规范导入导出对比

349 阅读1分钟

一、commonJs中使用module.exportsexports对象导出,使用 require导入

1.1 两种导出方式

module.exports = {
  name: 'xx',
  sayHello: () => {
    console.log('hello')
  }
}
或
exports = {
  name: 'xx',
  sayHello: () => {
    console.log('hello')
  }
}
或
module.exports.name = 'xx'
exports.name = 'xx'

1.2 require导入

// 模块在node中通过 require 导入会自动执行
// 默认导入时候 接收到的是导入模块的 module.exports对象
const md =  require('./module')

二、Es6模块中使用 exportexport default 导出,使用import导入

2.1 默认导出(default export):每个模块只能有一个默认导出。默认导出可以是任何类型的值,如函数、类、对象、原始值等。可以使用以下语法进行默认导出:

export default myClass; // 导出一个类
export default myObject; // 导出一个对象
export default 42; // 导出一个原始值

2.2 命名导出(named export):可以一次导出多个命名变量或函数。可以使用以下语法进行命名导出:

export let var2 = "value2"; // 导出一个变量
export function myFunction() {} // 导出一个函数
export class MyClass {} // 导出一个类

2.3 需要注意的是,如果要在另一个模块中使用导出的变量、函数或类,可以使用import关键字导入。默认导出可以使用任何名称进行导入,而命名导出必须使用导出时使用的名称进行导入。例如:

import myFunction from "./myModule";
// 导入命名导出
import { var1, var2 } from "./myModule";