• Home
  • Explore
  • Detail

CommonJS和ESM的区别

7 views

区别在两个方面 1. 标准来源 2. 时态 ## 标准来源 CMJ:社区标准,跟随Node出来的。因为是出自于社区,因此语法层面等官方东西无法改变,只能在API层面上改动,所以开发出来一个require函数。 ESM:官方标准。是官方新增了语法,属于语法层面的改动。 ## 时态 CMJ:运行时,将模块放在函数中,exports、module、__dirname、__filename等其实都是这个函数的参数。 比如这段代码: image.png ESM:运行时(import(xxx)) + 编译时(静态: import xx from xx;)。 所以这样的代码是无效的: js import x from 变量; 因为其编译时的静态特点,可以在运行代码之前就能确定依赖关系,因此可以用来tree shaking。 > commonJS中可以这样: > js > if (xxx) { > require("xxx") > } > > 而ESM中是绝对不行的。