1

私はhttp://dojotoolkit.org/documentation/tutorials/1.7/hello_dojo/demo/module.htmlの例に取り組んでおり、次のようなディレクトリ構造を作成しました

w:/djt2/index.html
w:/djt2/js/mymodule.js  (exact copy of http://dojotoolkit.org/documentation/tutorials/1.7/hello_dojo/demo/myModule.js)

次に、Tinyweb Web サーバーを設定して、w:/djt2 からローカルホストにサービスを提供します。

サブディレクトリ内に配置index.htmlするように調整するために、少し変更しました(以下のコメントも削除しました)。mymodule.jsjs

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Tutorial: Hello Dojo!</title>

    <script>
        var dojoConfig = {
            async: true,
            packages: [{
                name: "djt2",
                location: '/js'     /* Location #1 */
            }]
        };
    </script>
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js"></script>
</head>
<body>
<h1 id="greeting">Hello</h1>
<script>
    require(["djt2/mymodule"], function(myModule){   /* Location #2 */
        myModule.setText("greeting", "Hello Dojo!");
        setTimeout(function(){
            myModule.restoreText("greeting");
        }, 3000);
    });
</script>
</body>
</html>

これは機能しますが、その理由を完全には理解していません...特に、ロケーション #1 では、元の hadlocation.pathname.replace(/\/[^/]+$/, '')が空の文字列に評価され、ローダーが CDN の場所で mymodule.js を検索するようにします (私も試しましたに場所を設定しまし"/"たが、それにより で検索されましたhttp://mymodule.js/)。

djt2/Location #2 では、接頭辞が...であることは少し神秘的です。

誰かがそれを説明したり、ドキュメントに案内したりできれば (私は新しいフレームワークを学ぶことに少し圧倒されています :-)。

4

1 に答える 1

4

構造に追加のdjt2ディレクトリを追加します

w:/djt2/js/djt2/mymodule.js

構成で baseUrl を設定します。

var dojoConfig = {
    async: true,
    baseUrl: '/js'
    packages: [{
         name: "djt2",
         location: 'djt2'
    }]
};

baseUrl を設定すると、dojo はカスタム モジュールを探す場所を知ることができます。パッケージの一部である場所は、baseUrl に相対的です。


私は常にモジュール/パッケージを名前空間と考えています。追加のパッケージで例を拡張するには、次のようになります。

w:/djt2/js/another/anotherModule.js

var dojoConfig = {
    async: true,
    baseUrl: '/js'
    packages: [{
         name: "djt2",
         location: 'djt2'
    }, {
         name: "another",
         location: 'another'
    }]
};
于 2012-07-22T11:39:40.387 に答える