CommonJS & ES Module

72 阅读1分钟

1. CommonJS

  • 社区标准
  • 使用函数实现的
  • 仅支持node环境
  • 动态依赖(需要代码运行后才能确定依赖)
  • 动态依赖是同步执行的
  • 之有普通函数的调用和赋值

2. ES Module

  • 官方标准
  • 使用了新的语法
  • 所有环境都支持
  • 支持静态依赖和动态依赖
  • 静态依赖:在代码运行前就要确定依赖
  • 动态依赖是异步的
  • 符号绑定

CMJ是社区标准, ESM是官方标准 CMJ是使用API实现的模块化,ESM是使用新的语法实现的模块化 CMJ仅在node环境中支持, ESM各种环境都支持 CMJ是动态依赖, 同步执行, ESM即支持动态依赖, 也支持静态, 动态依赖是异步执行的 ESM导入时有符号绑定,CMJ只是普通函数的调用和赋值

export 和export default的区别

export 为普通导出又叫做具名导出, 顾名思义, 他的导出必须带有命名, 比如变量定义, 函数定义这种带有命名的语句。在导出模块对象中, 命名为模块对象的属性名, 在一个模块中可以有多个具名导出 export default 为默认导出, 在模块对象中名称为固定为default, 因此无须命名,通常为一个表达式或者字面量, 在一个模块中只能有一个默认导出