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 .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow