dojo
Настройка Dojo с помощью dojoConfig
Поиск…
замечания
Объект 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 .