本节我们来对比一下AMD,CMD,CommenJS和ES6
首先说一下什么是AMD,CMD和CommenJS。
其实这三个都是一种规范或者说标准。AMD是国外一个团队搞出来的异步模块定义,CMD是国内的淘宝团队搞出来的同步模块定义,其知名度不如AMD
- AMD
AMD是RequireJS在推广过程中对模块定义的规范化产出。这听起来是不是很拗口?首先又蹦出来了一个新概念,什么是RequireJS?RequireJS 是一个JavaScript文件和模块加载器。我们知道ECMAScript是一个组织,Javascript是一门编程语言,JavaScript语言就是对ECMAscript组织制定语言标准的一种实现,那么同样的,AMD是一种概念,然后RequireJS就是对于这个AMD概念的一种脚本语言实现。
而且AMD是依赖前置的,就是说我们所依赖的所有包都要放在文件的最上方,然后进行异步加载。
下图是我们requireJS实现功能的一个例子
- CMD
与AMD正好“相对”,AMD是异步模块化定义,CMD是同步模块化定义。CMD是SeaJS在推广过程中对模块定义的规范化产出。
CMD是就近依赖,项目中所依赖的包或者说库都是放在要调用的内容的就近部分,即用即返回。显然,他是一个同步的概念。
下图是我们SeaJS实现功能的一个例子