AMD 和 CMD 的区别
阅读:5389 次 编辑日期:2017-01-03
目录:
概述:
不怕大家笑话,最近才开始研究 RequireJS 、SeaJS,之前都是瞎用,所以最近了解到了AMD 和 CMD,那么AMD 和 CMD 的区别是什么呢?今天我们来说说。
话说元旦了,2016就这么过去了,2016我最大的收获就是媳妇儿大人给我生了个会慢慢长大的小公举,正好元旦那天会叫爸爸了,心里软软的。
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性能好,因为需要才执行。