AMD是"Asynchronous Module Definition"的缩写。意思就是"异步模块定义".
AMD定义了我们所用的模块都是是异步载入的,所以我们要将依赖模块的代码片段要放在一个回调函数中,当异步载入模块完成后(也就是此模块已可用时)触发回调函数
经常使用的AMD库有require.js、sea.js

AMD标准中定义了下面两个API
(1) require([module], callback);

(2) define([depends], callback);

require接口用来载入一系列模块,define接口用来定义并暴露一个模块

在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>

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ3poZW5nXzc0MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">




最新文章

  1. C#开发微信门户及应用(27)-公众号模板消息管理
  2. 提取日志中的json请求发送到另外一台机器
  3. Delphi的DateToStr StrToDate格式灵活用法
  4. Unity-Animator深入系列---StateMachineBehaviour初始化时间测试
  5. 在centos6.5中安装reids
  6. iOS截屏代码
  7. Proud Merchants(01背包)
  8. hdu_2227_Find the nondecreasing subsequences_树状数组,离散化
  9. EntityFrameworkCore使用Migrations自动更新数据库
  10. easyUI datagrid 列宽自适应(简单 图解)(转)
  11. JavaScript笔记之第四天
  12. [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件
  13. 漫谈 SLAM 技术(上)
  14. 【TensorFlow篇】--Tensorflow框架实现SoftMax模型识别手写数字集
  15. POSIX Timer
  16. Mac OS X L2TP Client Setup
  17. C语言指针基本操作
  18. django -- Celery实现异步任务
  19. Mysql缓存中innodb_buffer_pool与Qcache的区别
  20. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(3) Date

热门文章

  1. 如何使用fetch
  2. MAVEN学习笔记之基础(1)
  3. SQLServer之merge函数用法
  4. 避免关注底层硬件,Nvidia将机器学习与GPU绑定
  5. 【udacity】机器学习-波士顿房价预测
  6. Oracle语句执行顺序
  7. 使用js控制文本超出部分显示省略号
  8. rm -fr删除不了文件
  9. mysql数据库重点监控
  10. 实验二:编写输出&quot;Hello World!&quot;