目录

AMD

 

概述

AMD(Asynchronous Module Definition):异步模块定义,采用异步方式加载模块。

示例

// 定义模块
define("Module", [], function() {
  var Module = function() {
    // Module 相关实现代码
  };
  return Module;
});
// 引用模块
require([Module], function(Module){
  // 相关处理代码
});

代码说明

模块定义

AMD通过define()函数来定义模块:

模块引用

如果需要参照某个外部模块导出的对象,需要事先引用该外部模块。

主要特点

AMD的主要特点:

原理探究

定义模块时,define函数被执行,解析器会用一些预定义的规则解析所有依赖模块的路径,并且把未载入也未进入等待列表的依赖放入等待列表,并加载这些依赖所对应的文件。当所有依赖被加载完后,才会执行定义时所设置的factory,并把factory的返回值存储在内部的哈希表里,而存储的键为定义时设置的id,没有有设置id的情况下,默认为该模块的模块名称(path/ModuleName)。

引用模块时,解析器会遍历所设置的依赖数组,以数组的成员(字符串)为键,从内部哈希表中查找到对应的值,赋值给回调函数中对应位置的参数。

参考

外部链接