裝載機配置
Dojo 在 Dojo 1.7 中收到了一個新的載入器,以適應工具包的新 AMD 模組格式。這個新的載入器新增了一些新的配置選項,這些選項對於定義包,對映等至關重要。有關載入程式的詳細資訊,請參閱高階 AMD 使用教程。重要的載入器配置引數包括
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,則在載入 DOM 和所有初始依賴項(包括 dojoConfig.deps 陣列中的那些依賴項)時,使用 dojo / parser 解析頁面。
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"]
回撥:檢索到 deps 後執行的回撥:
callback: function(parser) {
// Use the resources provided here
}
waitSeconds:模組訊號載入超時之前等待的時間; 預設為 0(永遠等待):
waitSeconds: 5
cacheBust:如果為 true,則將時間作為查詢字串附加到每個模組 URL 以避免模組快取:
cacheBust: true
現在讓我們建立一個簡單的演示,它將使用基本引數。一種非常常見的情況是使用 CDN 中的 Dojo Toolkit 和本地模組。
假設我們在/documentation/tutorials/1.10/dojo_config/demo
空間中使用帶有模組的 Google CDN:
<!-- 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
。我們還使用了別名,將 ready 與 dojo/domReady
聯絡起來。