原因: 为了解决 文件模块化 以及 加载问题 CommonJS 同步加载依赖(速度慢)运行后缓存结果应用于服务端(因为加载的模块多存储在本地,加载速度较快,所以不考虑异步)输出运行得到的值的拷贝 AMD: 异步加载依赖(速度快)预加载所有模块(浪费资源)使用时执行(性能较高)更适用于浏览器端(避免加载模块时导致的页面假死) CMD 同步加载依赖(速度慢)懒加载、使用时加载依赖(节约资源)使用时定义依赖(性能较差)适用于服务端 ES6 异步加载依赖编译时执行输出值的引用适用于服务端与浏览器端 UMD 集成了 ES6 CMD AMD,对它们进行兼容(宁是真的牛批)