通常我们会拿 CMD 规范来和 AMD 规范进行对比。那么 AMD 和 CMD 有什么区别和对比的呢?
对于依赖的模块,AMD 和 CMD 的处理方式是不一样的。
// CMD
define(function(require, exports, module) {
var a = require(‘./a‘)
a.doSomething()
// 依赖可以就近书写
var b = require(‘./b‘)
b.doSomething()
})
// AMD 默认推荐的是 依赖必须一开始就写好
define([‘./a‘, ‘./b‘], function(a, b) {
a.doSomething()
b.doSomething()
})
AMD 是 RequireJS
在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS
在推广过程中对模块定义的规范化产出。
SeaJS 是 CMD 规范的具体实现。使用 SeaJS 和使用 requireJS 十分类似,只是写法上稍微有所不同,具体如下:
如下面的代码:
<script src="./sea.js"></script>
<script>
define(function (require,exports,module) {
// exports : 对外的接口
// requires : 依赖的模块
require(‘./a.js‘);//如果地址是一个模块的话,那么require的返回值就是模块中的exports
});
</script>
事实上,在过去 SeaJS(CMD) 曾经颇具影响力,为什么要逐渐被淘汰了呢?
感兴趣的同学可以带着这样的问题,阅读下面的帖子。
Sea.js作者发布微博: 应该给 Sea.js 和 KISSY 也树一块墓碑了。 为啥啊?过时了吗?
原文:http://www.cnblogs.com/ice-blog/p/7355555.html