Как работают погрузчики AMD под капотом?
Итак, я сейчас использовал require.js, но понял, что на самом деле я не знаю, как это работает под капотом. В нем говорится, что это загрузчик AMD.
Я понимаю, что CommonJS является синхронным, что означает, что он блокирует выполнение других кодов во время загрузки. С другой стороны, AMD является асинхронной. Здесь я запутался.
Когда я определяю модуль, он должен загрузить a, b, c для выполнения обратного вызова. Как работает асинхронная работа?
- Разве это не синхронно, когда нужно сначала загрузить эти три зависимости?
- Означает ли это, что AMD загружает a, b, c асинхронно, а затем проверяет, загружены ли эти файлы (не заботятся о заказе), а затем выполнить обратный вызов?
define("name",["a","b","c"], function(a,b,c){
});
Ответы
Ответ 1
Как вы знаете, "AMD" (определение асинхронного модуля (AMD)) является специфическим API. Существует много совместимых с AMD "загрузчиков", включая RequireJS, curl.js и Dojo (среди прочих).
Подобно тому, как фреймворки, такие как JQuery и Dojo, предоставляют вам API через raw Javascript; программа, использующая AMD:
1) требуется библиотека, совместимая с AMD.js,
2) требует определенных программных "правил" и "условностей", а
3) В конечном итоге сидит "сверху" Javascript, который работает на вашем "Javascript engine" (будь то IE, Chrome, Firefox - что угодно).
Вот несколько ссылок, которые я нашел полезными:
PS:
Чтобы ответить на ваш ближайший вопрос, последняя ссылка немного обсуждает "require()" и "dynamic -loaded dependencies".