2013-11-01 2 views
0

Я пытаюсь понять додзё в сочетании с диджитскими макетами. В частности: нужно ли мне требовать виджеты компоновки в JS или достаточно использовать атрибуты данных html?Понимание dojo's в сочетании с diji/layout

Я прочитал Layout documentation и кажется, что вам нужны 3 вещи:

  • JavaScript: требует виджеты макета вы хотите использовать
  • HTML разметка
  • CSS

Но мне непонятно, почему мне нужно будет . вид виджетов вид в JavaScript с:

require(["dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane"]); 

Это указано в this example.

Я создал demoбез требуя «Dijit/макет/BorderContainer» и «Dijit/макет/ContentPane» и что работает отлично.

Можно ли оставить их в выписке из запроса?

ответ

2

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

Это означает, что вы можете создать слой со всеми вашими общими модулями, чтобы вам не нужно было набирать 100-миллисекундные запросы .js на ваш сервер, и вместо этого вы можете загрузить более громоздкий.

Кроме того, если у вас есть пользовательские модули, вы должны загрузить все зависимые виджеты внутри настраиваемого модуля, а не разрешать обнаружение парсера.

+0

Существует функция '' depsDeclarative' (http://dojotoolkit.org/reference-guide/1.9/build/transforms/depsDeclarative.html). Он сканирует соответствующим образом помеченные ресурсы для любых декларативных зависимостей модулей и добавляет их к слою. – phusick

1

dojo/parser загружает все зависимости для вас, так что вы сделать не необходимости требовать их программно в JavaScript, но вы должны их там, как только вы решили построить свой код, т.е. поместить все зависимости в один файл, который является причиной того, почему анализатор предупреждает вас, когда он загружает зависимости для вас:

enter image description here

Это авто нуждающегося также причина, почему parser.parse() возвращает promise, это потому, что это может быть асинхронно загрузкой dependencie s:

parser.parse().then(function(/* Array */ widgetInstances) { 

}); 
+0

Важное замечание: при написании шаблонов виджета с другими виджетами в них вы * должны * явно определять дочерние виджеты в качестве зависимостей, так как жизненный цикл dijit не является асинхронным. –

Смежные вопросы