Мое понимание модулей AMD (используя, например, RequireJs или curl.js):
require() используется для асинхронной загрузки разных модулей и при загрузке выполняется обратный вызов fn.
И чтобы определить модуль, у вас будут отдельные скрипты, которые используют define()
Но я видел, что некоторые модули используют require() внутри своего определения функции, например.
define([a, b, c], function(i, ii, iii){
require([d, e, f], function(d, e, f) {
// do some stuff with these require()'d dependancies
})
/* rest of the code for this module */
})
Но я нахожу это запутанным, потому что я бы подумал, что если модуль имеет зависимости, то они должны быть переданы через главную функцию define([dependancies], fnDefinition), а не внутри нее через require(), как это делает вышеприведенный пример.
Есть ли основания для этого?