CommonJS 中的 require/exports 和 ES6 中的 import/export 区别?

commonJS是浏览器环境之外构建JavaScript生态系统为目标产生的项目,

规范是为了解决JavaScript的作用域问题而定义的模块形式。
exports或module.exports来导出需要暴露的接口;

允许模块通过require 方法来同步加载所要依赖的其他模块;
CommonJS 模块的重要特性是加载时执行,即脚本代码在 require 的时候,就会全部执行。一旦出现某个模块被”循环加载”,就只输出已经执行的部分,还未执行的部分不会输出。

CommonJS 规范规定,每个模块内部, module 变量代表当前模块。这个变量是一个对象,它的 exports 属性(即module.exports )是对外的接口。
加载某个模块,其实是加载该模块的 module.exports 属性。
export 命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。


ES6 模块是动态引用,如果使用 import 从一个模块加载变量,那些变量不会被缓存,而是成为一个指向被加载模块的引用,需要开发者自己保证,真正取值的时候能够取到值。
import/export 最终都是编译为 require/exports 来执行的。

猜你喜欢

转载自www.cnblogs.com/CCLlog/p/8965909.html