수색…


비고

dojoConfig 오브젝트 (이전의 djConfig )를 사용하면 dojo 툴킷의 다양한 측면에 대한 옵션 및 기본 동작을 설정할 수 있습니다. 예제를 통해 가능한 것이 무엇인지, dojoConfig를 코드에 어떻게 사용할 수 있는지 설명 할 것입니다.

dojoConfig는 dojo.js가로드되기 전에 스크립트 블록에 정의됩니다. 이것이 중요합니다. 역전하면 구성 속성이 무시됩니다.

DojoConfig로드

아래 샘플에서는 모든 구성 값을 포함하는 하나의 글로벌 javascript 객체 인 dojoConfig 를 작성합니다.

주 : dojo.js가로드되기 전에 dojoConfig가 스크립트 블록에 정의됩니다. 이것이 중요합니다. 역전하면 구성 속성이 무시됩니다.

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

경로 : 파일 경로에 모듈 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"]

callback : 일단 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>

패키지 설정을 사용하여, 우리는 로컬 /documentation/tutorials/1.10/dojo_config/demo/ 디렉토리를 가리키며, /documentation/tutorials/1.10/dojo_config/demo/ demo/* 에 대한 모든 참조는 dojo , dijitdojox 에 대한 참조를 Google CDN에서 dijit 수 있도록했습니다. 데모 패키지가 정의되지 않았다면 demo/AuthoredDialog 대한 요청은 //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/demo/AuthoredDialog.js 입니다. 또한 준비를 dojo/domReady 와 연결하여 별칭을 사용 dojo/domReady .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow