Корректный порядок зависимостей в схемах

Добрый день, коммьюнити,

Недавно узнал, что при определении зависимостей в схемах важен порядок. CSS модули должны быть определены в конце, иначе вызов некоторых функций может вызвать undefined, даже если там нет никакой ошибки. 

Например, define("EmailFileDetailV2", ["ModalBox", "ServiceHelper",  "ProcessModuleUtilities", "css!UsrFileDetailCSS"]



Сегодня обнаружил, что неправильный порядок кроме undefined может вызвать ошибку "X is not a function". Ломал голову полдня, а в итоге обнаружил, что зависимости в детали были прописаны не в том порядке. Оставлю это здесь, на случай если кто-то так же не будет понимать причину ошибки)



Я правильно понимаю, что вызов "родителей" осуществляется в таком же порядке, в котором они прописаны? И в случае если имя метода/css-стиля совпадает в нескольких "родителях", то вызывается первый из них? 

Нравится

2 комментария

Обратите внимание на статью:

Загрузчик выполняет загрузку всех модулей-зависимостей, переданных в качестве аргументов в define(). Модули загружаются асинхронно, при этом фактически порядок их загрузки определяется загрузчиком произвольно.

Но при этом (там же ниже) 

dependencies

Массив имен модулей, от которых зависит данный модуль. Необязательный параметр.

RequireJS выполняет загрузку всех зависимостей, переданных в массиве. Нужно учитывать, что порядок перечисления зависимостей в массиве dependencies должен соответствовать порядку перечисления параметров, передаваемых в функцию-фабрику. Функция-фабрика будет вызвана только после того, как будут загружены все зависимости, перечисленные в dependencies. Загрузка модулей-зависимостей выполняется асинхронно.

function(dependencies)

Анонимная функция-фабрика, которая инстанцирует сам модуль. Обязательный параметр.

В качестве аргументов в функцию передаются объекты, которые ассоциируются загрузчиком с модулями-зависимостями, перечисленными в аргументе dependencies. Через эти аргументы осуществляется доступ к свойствам и методам модулей-зависимостей внутри создаваемого модуля. Порядок перечисления модулей в dependencies должен соответствовать порядку аргументов функции-фабрики.

Зверев Александр,

большое спасибо!

Показать все комментарии