直接定义依赖 1999
闭包模块化 2003
CommonJS 2009 模块化借助于nodeJS正式上场
- nodejs
- 服务端
- 同步加载
AMD 2009
- requireJS
- 同时兼容浏览器端和服务端
- 异步加载,提前加载依赖(即require的时候已经加载了依赖。
CMD seaJS 玉伯
- seaJS
- 着重于浏览器端
- 异步加载,运行到模块的时候才加载。更接近esmodule
UMD 2011
- 兼容性语法糖
- 优先解析为CommonJS模块机制,其次是Amd模块机制。exports Object
ESModules 2015
- es6
- 浏览器端实现,node在高版本也有一定支持(实验性)。
- 异步加载,运行到模块的时候才加载。
webpack 模块化
- 支持各种模块化机制。主要支持CommonJS和ESM。
- 浏览器和服务器端都可用。
- 同步加载,遵循CommonJS规范。
- Code Splitting,本质上是异步创建script节点来达到异步加载资源的目的。