CMD规范:是SeaJS 在推广过程中对模块定义的规范化产出的。
AMD规范:是 RequireJS 在推广过程中对模块定义的规范化产出的
// CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此处略去 100 行 var b = require('./b') // 依赖可以就近书写 b.doSomething() // ... }) 其中require,export,module是cmd自带的封装方法(自带API)
// AMD 默认推荐的是 define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好 a.doSomething() // 此处略去 100 行 b.doSomething() ... }) 其中['./a', './b']是依赖模块,a是模块提供的API
比较上述2种模块化方式: CMD规范是将模块的引用和加载放到了模块实际要用的时候加载,而AMD规范则是预加载,就是在使用的时候先对依赖的全部文件进行加载,加载完了再进行处理, require调用模块,define定义模块,config是配置模块。
总结:CMD是延迟执行的,而AMD是提前执行的。