在AMD中咱们js的代码都是放在require的回调中的,require函数帮咱们加载依赖的模块而且处理器深层次的依赖关系(依赖的依赖等等)并在一切依赖加载完毕后,将模块做为回调函数的传参,并调用回调函数.
咱们的js代码须要B,C模块.B模块不依赖于任何模块,C模块依赖于D模块
require([B,C],function(B,C){
var A = {};
A.say = B.say;
A.run = C.run;
return A;
});
B.js
define([], function(){
var B = {};
B.say = function() {
console.info('say hello!');
}
return B;
});
C.js
define([D], function(D){
var C={};
c.run = function() {
console.info(D.name + ' free running!');
}
return C;
})
D.js
define([],function(){
var D={'name':'songzheng'};
return D;
});
先假设一切模块都还未加载,整个加载过程以下
(1)代码依赖着B、C模块,调用require加载B、C模块
(2)B模块不依赖于任何模块当加载成功后,回调factoryB,安装B模块
(3)在加载C模块时发现C模块依赖着D模块因而调用require加载D模块
(4)D模块不依赖任何模块,加载成功后,回调factoryD加载安装D模块
(5)C依赖的D模块加载成功后,回调factoryC,安装C模块
(6)全部依赖安装完毕,执行回调函数
我在本身的AMD实现的步骤中加了一些日志打印,能够更清晰的看到模块的加载过程
<script type="text/javascript">
require(['Iris','cookie'], function(Iris, Cookie){
console.info(Iris);
console.info(Cookie);
});
</script>