首页 > 其他 > 详细

CMD 和 AMD

时间:2017-08-14 01:09:40      阅读:301      评论:0      收藏:0      [点我收藏+]

通常我们会拿 CMD 规范来和 AMD 规范进行对比。那么 AMD 和 CMD 有什么区别和对比的呢?

申明依赖模块不同

对于依赖的模块,AMD 和 CMD 的处理方式是不一样的。

  • AMD 推崇依赖前置,在定义模块的时候就要声明其依赖的模块。
  • CMD 推崇依赖就近,只有在用到某个模块的时候再去 require 。
// 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 提前执行依赖(异步加载:依赖先执行)+延迟执行
  • CMD 延迟执行依赖(运行到需加载,根据顺序执行)

加载器

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。

使用SeaJS

SeaJS 是 CMD 规范的具体实现。使用 SeaJS 和使用 requireJS 十分类似,只是写法上稍微有所不同,具体如下:

  1. 引入 SeaJS 的库
  2. 定义模块(define)
  3. 暴露模块接口(exports)
  4. 加载依赖模块(require)

如下面的代码:

<script src="./sea.js"></script>
<script>
  define(function (require,exports,module) {
      // exports : 对外的接口
      // requires : 依赖的模块
      require(‘./a.js‘);//如果地址是一个模块的话,那么require的返回值就是模块中的exports
  });
</script>

SeaJS(CMD)为什么被淘汰

事实上,在过去 SeaJS(CMD) 曾经颇具影响力,为什么要逐渐被淘汰了呢?

感兴趣的同学可以带着这样的问题,阅读下面的帖子。
Sea.js作者发布微博: 应该给 Sea.js 和 KISSY 也树一块墓碑了。 为啥啊?过时了吗?

更多阅读

CMD 和 AMD

原文:http://www.cnblogs.com/ice-blog/p/7355555.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!