Skip to content

cjs 与 esm 区别

1. 模块引入方式

  • cjs 引入方式:require
  • esm 引入方式:import

2. 模块导出方式

  • cjs 导出方式:module.exports
  • esm 导出方式:export

3. 模块加载方式

  • cjs 加载方式:同步加载
  • esm 加载方式:异步加载

4. 模块缓存

  • cjs 模块缓存:多次引入只加载一次
  • esm 模块缓存:多次引入每次都会加载

5. 模块循环引用

  • cjs 模块循环引用:会报错
  • esm 模块循环引用:不会报错,会递归加载

6. 模块加载顺序

  • cjs 模块加载顺序:先加载后执行
  • esm 模块加载顺序:先加载先执行

7.tree shaking

  • cjs 没有tree shaing
  • esm 有tree shaing

8. 模块热更新

  • cjs 没有模块热更新
  • esm 有模块热更新

9.顶层this

  • cjs 顶层this指向模块本身
  • esm 顶层this指向undefined
关注公众号