Skip to main content

CommonJS 模块与 ES6 模块的区别

CommonJS

  1. 对基本数据类型,属于复制。在另一个模块中可以对该模块输出的变量重新赋值
  2. 对引用类型,属于浅拷贝。对模块导出的变量的值修改时,会影响到其他引用的模块。
  3. require 加载模块时,会运行这个模块代码。
  4. require 加载同一模块时,不会执行该模块,会取缓存中的值,CommonJs 模块只会在第一次加载时运行一次,重复加载时,返回第一次运行的结果

ES6 模块

  1. ES6 导出的值,属于动态只读引用
  2. import 的变量是只读属性的,不论基本类型或引用类型。
  3. 因为是动态只读,原始值发生变化,import 加载的值也会发生变化,不论基本或引用类型