10

私はグーグルのCDNを使用しており、ローダーを使用して自分のAMDモジュールをロードしようとしています。私は何か間違ったことをしていることを知っていますが、行き詰まっています。何か案は?

    <script src="https://ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.js" 
            type="text/javascript" data-dojo-config="async:true,parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dojo/_base/kernel", "dojo/_base/loader", "dojo/parser"], function(dojo){
            dojo.registerModulePath("pgGallery", "http://127.0.0.1:8080/js");
        });
        require(["pgGallery/Message"], function(m){
            m.success("foo");
        });
    </script>

http://127.0.0.1:8080/js/Message.jsは、モジュールの場所です。

4

2 に答える 2

11

私はここでそれを行う方法を理解しました:http ://dojotoolkit.org/reference-guide/quickstart/cross-domain.html 「ローカルモジュールでのCDNの使用」の下。

ページの例:

<script type="text/javascript">
    var dojoConfig = {
        async: true,
        packages: [
            {
                name: "my",
                location: "/absolute/path/to/local/modules"
            }
        ]
    };
</script>

<!-- Bootstrap Dojo From Google's CDN -->
<!-- removing the protocol from src url auto detects if current page is served via http or https and also loads the dojo resources from matching protocol -->
<script
    type="text/javascript"
    src="//ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js">
</script>

<script type="text/javascript">
    require(["my/FooModule"], function(FooModule){
        // ...
    });
</script>
于 2012-01-03T00:15:02.490 に答える
0

私が使用している、動作するはずの別のオプションはこれです。「.js」に注意してください。どういうわけか、ローダーはそれを異なって扱います。

require(["pgGallery/Message.js"], function(m){
        m.success("foo");
    });

http://dojotoolkit.org/reference-guide/1.8/loader/amd.htmlを参照してください。

moduleIdがプロトコル(たとえば、「http:」)またはスラッシュで始まる場合、または「.js」サフィックスで終わる場合は、リクエストがモジュールではなく、JavaScriptの任意のチャンクに対するものであると想定します。

私が知らないのは、これがベストプラクティスであるかどうかです。

于 2013-02-07T18:34:30.827 に答える