CommonJS与ES6module

CommonJS与ES6module

  • 因为CommonJSrequire语法同步的,所以就导致了CommonJS模块规范只适合用在服务端,而ES6模块无论是在浏览器端还是服务端都是可以使用的,但是在服务端中,还需要遵循一些特殊的规则才能使用 ;
  • CommonJS模块输出的是一个值的拷贝,而ES6模块输出的是值的引用
  • CommonJS模块是运行时加载,而ES6模块编译时输出接口
  • 因为两个模块加载机制的不同,所以在对待循环加载的时候,它们会有不同的表现。CommonJS遇到循环依赖的时候,只会输出已经执行的部分,后续的输出或者变化,是不会影响已经输出的变量。而ES6模块相反,使用import加载一个变量,变量不会被缓存,真正取值的时候就能取到最终的值
  • 关于模块顶层的this指向问题,在CommonJS顶层,this指向当前模块;而在ES6模块中,this指向undefined

你可能感兴趣的:(CommonJS与ES6module)