最近更新
阅读排行
关注本站

AMD 和 CMD 的区别

阅读:1698 次   编辑日期:2017-01-03

目录:

概述:

不怕大家笑话,最近才开始研究 RequireJS 、SeaJS,之前都是瞎用,所以最近了解到了AMD 和 CMD,那么AMD 和 CMD 的区别是什么呢?今天我们来说说。

话说元旦了,2016就这么过去了,2016我最大的收获就是媳妇儿大人给我生了个会慢慢长大的小公举,正好元旦那天会叫爸爸了,心里软软的。

ES6常用的新增特性

AMD - RequireJS:

AMD的意思是:异步模块定义。
RequireJS就是AMD的代表,主要有以下特点:
1.AMD 是提前执行(Require 1.x),说直白点就是需要的文件都会事先预加载,所有模块都加载执行完后会进入require的回调函数,执行主逻辑,这样的效果就是依赖模块的执行顺序和书写顺序不一定一致
2.依赖前置,这个好理解吧,在RequireJS中,把需要的模块放到最前面引入。
    //RequireJS
    require(['module1', 'module2', 'module3'], function (module1, module2, module3){
    // some code here
  });

CMD - SeaJS:

CMD的意思是:通用模块定义。
声明远扬的玉伯老师的SeaJS就是CMD的代表,主要有以下特点:
1.CMD 是延迟执行,CMD加载完某个依赖模块后并不执行,只是下载而已,在所有依赖模块加载完成后进入主逻辑,遇到require语句的时候才执行对应的模块,这样模块的执行顺序和书写顺序是完全一致的。
2.依赖就近。什么时候用,什么时候引入。
    //SeaJS
    define(function(require, exports) {

      // 获取模块 uw3c 的接口
      var uw3c = require('./uw3c');

      // 调用模块 a 的方法
      uw3c.doSomething();

    });

AMD vs CMD:

AMD用户体验稍好,因为没有什么延迟,因为依赖模块提前执行了,CMD性能好,因为需要才执行。
将本篇文章分享到:
top