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是提前执行的。