面试之module和commonJS的区别

1.module

ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。

除了静态加载带来的各种好处,ES6 模块还有以下好处。

  • 不再需要UMD模块格式了,将来服务器和浏览器都会支持 ES6 模块格式。目前,通过各种工具库,其实已经做到了这一点。
  • 将来浏览器的新 API 就能用模块格式提供,不再必须做成全局变量或者navigator对象的属性。
  • 不再需要对象作为命名空间(比如Math对象),未来这些功能可以通过模块提供。

ES6 模块之中,顶层的this指向undefined,即不应该在顶层代码使用this

2.commonjs

CommonJS 和 AMD 模块,都只能在运行时确定这些东西。CommonJS 模块就是对象,输入时必须查找对象属性。

摘自阮大神https://es6.ruanyifeng.com/#docs/module

原文地址:https://www.cnblogs.com/OnceKing1996/p/13602295.html