ES6模块和CommonJS都是为了前端模块化出现的模块加载方案
- CommonJS模块输出的是值的拷贝,当模块内部值发生改变时,影响不到输出的这个值;ES6模块是动态的引用,模块内部的值与输出的值绑定,其中有一方值发生改变,另一方的值也动态发生改变。
- CommonJS是运行时加载,加载的是一个对象,这个对象只有在脚本运行完成后才会生成;ES6模块是编译时输出接口,它不是一个对象,只是一种静态定义,在代码解析阶段就会生成。
- 语法不同。CommonJS模块用法为module.export + {name : name}, var name = require("./test.js"); ES6的语法为export name , import name from “./test.js”