dojo
Konfigurera Dojo med dojoConfig
Sök…
Anmärkningar
DojoConfig- objektet (tidigare djConfig ) låter dig ställa in alternativ och standardbeteende för olika aspekter av dojo-verktygssatsen. Exempel förklarar vad som är möjligt och hur du kan använda dojoConfig att använda i din kod.
Observera att dojoConfig definieras i ett skriptblock innan dojo.js laddas. Detta är av största vikt - om det väntas ignoreras konfigurationsegenskaperna.
Ladda DojoConfig
I nedanstående prov skapar vi ett globalt javascriptobjekt dojoConfig som kommer att innehålla alla konfigurationsvärden.
Obs: dojoConfig definieras i ett skriptblock innan dojo.js laddas. Detta är av största vikt - om det väntas ignoreras konfigurationsegenskaperna.
<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>
Loader Configuration
Dojo fick en ny lastare i Dojo 1.7 för att rymma för verktygssatsens nya AMD-modulformat. Denna nya lastare har lagt till några nya konfigurationsalternativ som är avgörande för att definiera paket, kartor och mer. Mer information om laddaren finns i avancerad AMD-bruksanvisning. Viktiga parametrar för laddarkonfiguration inkluderar:
baseUrl: Bas-webbadressen förhindras till en modulidentifierare när den konverteras till en sökväg eller URL.
baseUrl: "/js"
paket: En rad objekt som innehåller paketets namn och plats:
packages: [{
name: "myapp",
location: "/js/myapp"
}]
karta: Gör att du kan kartlägga banor i modulidentifierare till olika vägar:
map: {
dijit16: {
dojo: "dojo16"
}
}
sökvägar: en karta över modul-ID-fragment till filvägar:
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: Definierar om Dojo-kärnan ska laddas asynkront. Värden kan vara sanna, falska eller legacyAsync, vilket sätter lastaren permanent i arv över domänläge.
async: true
parseOnLoad: Om sant, parsar sidan med dojo / parser när DOM och alla initiala beroenden (inklusive de i dojoConfig.deps-matrisen) har laddats.
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: En rad resursvägar som bör laddas omedelbart när Dojo har laddat:
deps: ["dojo/parser"]
återuppringning: återuppringning för att köra när deps har hämtats:
callback: function(parser) {
// Use the resources provided here
}
waitSeconds: Mängd tid att vänta innan signalering av lasttid för en modul; som standard är 0 (vänta för evigt):
waitSeconds: 5
cacheBust: Om det är sant lägger du till tiden som en frågesträng till varje modul-URL för att undvika cache-modul:
cacheBust: true
Låt oss nu skapa en enkel demo som använder de grundläggande parametrarna att använda. Ett mycket vanligt scenario är att använda Dojo Toolkit från CDN med lokala moduler.
Låt oss säga att vi använder Google CDN med moduler i /documentation/tutorials/1.10/dojo_config/demo space:
<!-- 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>
Genom att använda paketkonfigurationen har vi gjort att alla referenser till demo/* pekar på vår lokala /documentation/tutorials/1.10/dojo_config/demo/ , samtidigt som alla referenser till dojo , dijit och dojox kommer från Google CDN. Hade inte demopaketet definierats skulle begäran om demo/AuthoredDialog ha gått till //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js . Vi använde också alias genom att associera redo med dojo/domReady .