CommonJS(Node.js)
- 同步加载,适合服务器端
- 输出的是值的拷贝
AMD(RequireJS)
- 异步加载,初始定义所有依赖模块
CMD(SeaJS)
- 依赖就近,用的时候再 require
- AMD 和 CMD 最大区别是对依赖模块的执行时机不同
ES6 Module
- 输出的是值的引用,编译时输出接口
- 静态分析,支持 Tree Shaking
const foo = 10;
export { foo as default }; // foo 更新会影响 default
export default foo; // foo 更新不影响 default