2013-11-01 44 views
0

我想了解dojo與dijit佈局的組合。更具體地說:我是否需要JS中的佈局小部件或足夠使用html數據屬性?瞭解dojo的需求與diji /佈局

我讀過Layout documentation,它似乎像你需要三樣東西:

  • 的JavaScript:要求要使用
  • HTML標記
  • CSS

佈局部件但是我不清楚爲什麼我需要需要 JavaScript中的佈局部件:

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

這在this example中陳述。

我創建了一個demo,而不需要 「的dijit /佈局/使用BorderContainer」 和 「的dijit /佈局/ contentPane的」,並且工作正常。

將它們排除在要求聲明之外是否安全?

回答

2

你應該要求你的模塊,而不是讓,因爲最好要所有的解析器運行前加載,這樣你可以捆綁你的所有相關模塊集成到一個圖層文件的模塊的解析器加載它們。

這意味着您可以創建一個包含所有常用模塊的圖層,以便您不需要將100個微小的.js請求打到您的服務器上,而是可以加載一個較大的.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生命週期不是異步的。 –