amd的定义和加载形式:
// 定义模块 myModule.js
define(['dependency'], function(){
var name = 'Byron';
function printName(){
console.log(name);
}
return {
printName: printName
};
});
// 加载模块
require(['myModule'], function (my){
my.printName();
});
cmd的定义和加载形式:
// 定义模块 myModule.js
define(function(require, exports, module) {
var $ = require('jquery.js')
$('div').addClass('active');
});
// 加载模块
seajs.use(['myModule.js'], function(my){
});
amd和cmd都是异步加载,这里的异步的意思是在加载的过程中不影响后续程序的执行,包括不会停止dom的渲染。
amd需要在定义的时候先把它依赖的模块都声明,cmd则是在工厂函数里require。
这两个最大的不同不在于加载的不同,他们都是开始时都加载了的,而amd是在加载完就执行,而cmd是在require语句的时候进行的。所以cmd的执行顺序和定义顺序相同。
但是最终他们都需要在所有模块都加载完才会执行回调函数,所以没有影响。