**IIFE:**自执行函数解决 命名空间 的问题
AMD/CMD: 解决模块间的 依赖加载 和 执行顺序 的问题
CommonJS: Node
服务端 采用的模块加载规范
**UMD:**实现上述模块 规范兼容 的统一处理
**ES6 Modules:**前端模块加载的 官方规范
Webpack: 前端构建工具,可实现不同规范不同资源的模块化
graph TD
M[JS Module]
I[1. IIFE ]
AC[2. AMD/CMD]
CommonJs[3. CommonJs ]
UMD[4. UMD]
ES6[5. ES6 Modules ]
Webpack[6. Webpack ]
M --> I
M --> CommonJs
M --> AC
M --> |browser| ES6
subgraph one
I
CommonJs
AC
end
AC --> UMD
CommonJs --> UMD
UMD --> Webpack
ES6 --> Webpack
import * from 'xxx' 和 import() 的区别
CommonJS 与 ES6 的差异
require
命令第一次加载模块时会在内存中生成并 缓存 该对象id
属性就是模块名,取值是将从 exports
属性中取值require
加载多次时,也不会被真正执行,除非手动清楚系统缓存import
时,会生成 只读引用,当脚本真正执行时,再根据引用到被加载模块里取值