Поиск…


замечания

Объект dojoConfig (ранее djConfig ) позволяет вам устанавливать параметры и поведение по умолчанию для различных аспектов инструментария dojo. Примеры объяснят, что возможно, и как вы можете поместить dojoConfig в свой код.

Обратите внимание, что dojoConfig определен в блоке скрипта до загрузки dojo.js. Это имеет первостепенное значение - если отменить, свойства конфигурации будут проигнорированы.

Загрузить DojoConfig

В примере ниже мы создаем один глобальный объект javascript dojoConfig который будет содержать все значения конфигурации.

Примечание: dojoConfig определен в блоке скрипта до загрузки dojo.js. Это имеет первостепенное значение - если отменить, свойства конфигурации будут проигнорированы.

<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>

Конфигурация загрузчика

Доджо получил новый загрузчик в Dojo 1.7 для размещения нового формата модуля AMD. Этот новый загрузчик добавил несколько новых параметров конфигурации, которые имеют решающее значение для определения пакетов, карт и т. Д. Подробнее о загрузчике см. В учебном пособии Advanced AMD Usage. Важные параметры конфигурации загрузчика включают:

baseUrl: базовый URL-адрес, добавленный к идентификатору модуля, при преобразовании его в путь или URL-адрес.

baseUrl: "/js"

packages: массив объектов, которые предоставляют имя и расположение пакета:

packages: [{
    name: "myapp",
    location: "/js/myapp"
}]

map: позволяет сопоставлять пути в идентификаторах модулей по разным путям:

map: {
    dijit16: {
        dojo: "dojo16"
    }
}

paths: карта фрагментов id модуля в пути к файлам:

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: Определяет, следует ли загружать ядро ​​Dojo асинхронно. Значения могут быть true, false или legacyAsync, что ставит загрузчик навсегда в режиме междоменного использования.

async: true

parseOnLoad: если true, анализирует страницу с помощью dojo / parser, когда загружаются DOM и все начальные зависимости (в том числе в массиве dojoConfig.deps).

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: массив путей ресурсов, который должен загружаться сразу после загрузки Dojo:

deps: ["dojo/parser"]

callback: восстановлен обратный вызов для выполнения после депонирования:

callback: function(parser) {
    // Use the resources provided here
}

waitSeconds: время ожидания перед сигнальной нагрузкой для модуля; по умолчанию 0 (ожидание):

waitSeconds: 5

cacheBust: если true, добавляет время в качестве запроса на каждый URL-адрес модуля, чтобы избежать кэширования модулей:

cacheBust: true

Теперь давайте создадим простую демоверсию, которая будет использовать основные параметры. Один очень распространенный сценарий - использование Dojo Toolkit из CDN с локальными модулями.

Предположим, мы используем Google CDN с модулями в /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>

Используя конфигурацию пакетов, мы сделали все ссылки на demo/* указали на наш локальный каталог /documentation/tutorials/1.10/dojo_config/demo/ , а также разрешили любые ссылки на dojo , dijit и dojox из Google CDN. Если демо-пакет не был определен, запрос на demo/AuthoredDialog перешел бы на //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js . Мы также использовали псевдоним, связав его с dojo/domReady .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow