裝載機配置

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/目錄,同時允許任何對 dojodijitdojox 的引用來自 Google CDN。如果沒有定義演示包,demo/AuthoredDialog 的請求將轉到//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js。我們還使用了別名,將 ready 與 dojo/domReady 聯絡起來。