dojo
Konfigurowanie Dojo za pomocą dojoConfig
Szukaj…
Uwagi
Obiekt dojoConfig (wcześniej djConfig ) umożliwia ustawienie opcji i domyślnego zachowania różnych aspektów zestawu narzędzi dojo. Przykłady wyjaśnią, co jest możliwe i jak wykorzystać dojoConfig w kodzie.
Zauważ, że dojoConfig jest zdefiniowany w bloku skryptu przed załadowaniem dojo.js. Ma to ogromne znaczenie - w przypadku odwrócenia właściwości konfiguracji zostaną zignorowane.
Załaduj DojoConfig
W dojoConfig przykładzie tworzymy jeden globalny obiekt javascript dojoConfig który będzie zawierał wszystkie wartości konfiguracyjne.
Uwaga: dojoConfig jest definiowany w bloku skryptu przed załadowaniem dojo.js. Ma to ogromne znaczenie - w przypadku odwrócenia właściwości konfiguracji zostaną zignorowane.
<script>
dojoConfig= {
has: {
"dojo-firebug": true
},
parseOnLoad: false,
foo: "bar",
async: true
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<script>
// Require the registry, parser, Dialog, and wait for domReady
require(["dijit/registry", "dojo/parser", "dojo/json", "dojo/_base/config", "dijit/Dialog", "dojo/domReady!"]
, function(registry, parser, JSON, config) {
// Explicitly parse the page
parser.parse();
// Find the dialog
var dialog = registry.byId("dialog");
// Set the content equal to what dojo.config is
dialog.set("content", "<pre>" + JSON.stringify(config, null, "\t") + "```");
// Show the dialog
dialog.show();
});
</script>
<!-- and later in the page -->
<div id="dialog" data-dojo-type="dijit/Dialog" data-dojo-props="title: 'dojoConfig / dojo/_base/config'"></div>
Konfiguracja modułu ładującego
Dojo otrzymało nowy moduł ładujący w Dojo 1.7, aby uwzględnić nowy format modułu AMD zestawu narzędzi. Ten nowy moduł ładujący dodał kilka nowych opcji konfiguracji, które są niezbędne do definiowania pakietów, map i innych. Szczegółowe informacje na temat modułu ładującego znajdują się w samouczku Advanced AMD Usage. Ważne parametry konfiguracyjne modułu ładującego obejmują:
baseUrl: Podstawowy adres URL poprzedzony identyfikatorem modułu podczas konwersji na ścieżkę lub adres URL.
baseUrl: "/js"
pakiety: tablica obiektów, które podają nazwę i lokalizację pakietu:
packages: [{
name: "myapp",
location: "/js/myapp"
}]
map: umożliwia mapowanie ścieżek w identyfikatorach modułów na różne ścieżki:
map: {
dijit16: {
dojo: "dojo16"
}
}
ścieżki: mapa fragmentów identyfikatora modułu do ścieżek plików:
var dojoConfig = {
packages: [
"package1",
"package2"
],
paths: {
package1: "../lib/package1",
package2: "/js/package2"
}
};
// ...is equivalent to:
var dojoConfig = {
packages: [
{ name: "package1", location: "../lib/package1" },
{ name: "package2", location: "/js/package2" }
]
};
async: Określa, czy rdzeń Dojo powinien być ładowany asynchronicznie. Wartości mogą być prawdziwe, fałszywe lub starszeAsync, co powoduje trwałe włączenie modułu ładującego w starszym trybie między domenowym.
async: true
parseOnLoad: Jeśli true, parsuje stronę za pomocą dojo / parser, gdy DOM i wszystkie początkowe zależności (w tym te w tablicy dojoConfig.deps) zostały załadowane.
parseOnLoad: true
It is recommended that parseOnLoad be left at false (it defaults to false, so you can simply omit this property), and that developers explicitly require dojo/parser and call parser.parse().
deps: tablica ścieżek zasobów, które powinny zostać załadowane natychmiast po załadowaniu Dojo:
deps: ["dojo/parser"]
wywołanie zwrotne: wywołanie zwrotne do wykonania po odzyskaniu deps:
callback: function(parser) {
// Use the resources provided here
}
waitSeconds: Czas oczekiwania przed sygnalizacją przekroczenia limitu czasu ładowania modułu; domyślnie 0 (czekaj wiecznie):
waitSeconds: 5
cacheBust: Jeśli true, dołącza czas jako kwerendę do adresu URL każdego modułu, aby uniknąć buforowania modułu:
cacheBust: true
Teraz stwórzmy proste demo, które wykorzystuje podstawowe parametry. Jednym z bardzo częstych scenariuszy jest używanie Dojo Toolkit z CDN z modułami lokalnymi.
Załóżmy, że używamy Google CDN z modułami w przestrzeni /documentation/tutorials/1.10/dojo_config/demo :
<!-- Configure Dojo first -->
<script>
dojoConfig = {
has: {
"dojo-firebug": true,
"dojo-debug-messages": true
},
// Don't attempt to parse the page for widgets
parseOnLoad: false,
packages: [
// Any references to a "demo" resource should load modules locally, *not* from CDN
{
name: "demo",
location: "/documentation/tutorials/1.10/dojo_config/demo"
}
],
// Timeout after 10 seconds
waitSeconds: 10,
map: {
// Instead of having to type "dojo/domReady!", we just want "ready!" instead
"*": {
ready: "dojo/domReady"
}
},
// Get "fresh" resources
cacheBust: true
};
</script>
<!-- Load Dojo, Dijit, and DojoX resources from Google CDN -->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<!-- Load a "demo" module -->
<script>
require(["demo/AuthoredDialog", "dojo/parser", "ready!"], function(AuthoredDialog, parser) {
// Parse the page
parser.parse();
// Do something with demo/AuthoredDialog...
});
</script>
Korzystając z konfiguracji pakietów, /documentation/tutorials/1.10/dojo_config/demo/ wszystkie odniesienia do demo/* do naszego lokalnego katalogu /documentation/tutorials/1.10/dojo_config/demo/ , jednocześnie dopuszczając wszelkie odniesienia do dojo , dijit i dojox pochodzące z Google CDN. Gdyby pakiet demo nie został zdefiniowany, żądanie wersji demo/AuthoredDialog //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js do //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js . Użyliśmy również aliasu, kojarząc ready z dojo/domReady .