模块化规范CommonJs和ES6的差别

112 阅读1分钟

1、写法

CommonJs: require + module.exports

ES6: import + export / export default

2、执行时机

CommonJs: 运行时

ES6: 编译时。编译时就能确定模块的依赖关系,以及输入和输出的变量。
目的:静态优化

  • 静态语法分析,如typeScript
  • 按需加载 import { getCache, setCache } from 'cache' 只会打包用到的这两个模块

3、输出

CommonJs: 值的拷贝。加载后有缓存,第一次以后取缓存

ES6: 值的引用。被调用模块有修改会影响到调用处