AMD加载器如何在引擎盖下工作?

Moo*_*oon 13 javascript amd

所以我现在一直在使用require.js,但我意识到我实际上并不知道它是如何工作的.它说这是一个AMD加载器.

我知道CommonJS是同步的,这意味着它在加载时会阻止其他代码的执行.另一方面,AMD是异步的.这是我感到困惑的地方.

当我定义一个模块时,它必须加载a,b,c才能执行回调.异步如何在这里工作?

  1. 当它必须首先加载这三个依赖项时,它不是同步的吗?
  2. 这是否意味着AMD异步加载a,b,c然后检查是否加载了这些文件(不关心顺序)然后执行回调?
define("name",["a","b","c"], function(a,b,c){

});
Run Code Online (Sandbox Code Playgroud)

pau*_*sm4 10

如您所知,"AMD"(异步模块定义(AMD))是一种特定的API.有许多与AMD兼容的"加载器",包括RequireJS,curl.js和Dojo(以及其他).

就像JQuery和Dojo这样的框架为您提供原始Javascript的API; 使用AMD的程序:

1)需要一个兼容AMD的.js库,

2)要求某些编程"规则"和"约定",以及

3)最终坐在Javascript的"顶部",它运行在你的"Javascript引擎"(无论是IE,Chrome,Firefox - 无论如何).

以下是我发现有用的几个链接:

PS:要回答你的直接问题,后一个链接有一些关于"require()"和"dynamic_loaded依赖"的讨论.