2012-01-03 7 views
10

私はGoogleのCDNを使用しており、自分のローダーを使用して自分のAMDモジュールを読み込もうとしています。私は間違っていることを知っているが、私は立ち往生している。何か案は?CDN経由でDojoを使用する場合、カスタム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は、モジュールの場所です。

答えて

11

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

ページからの例:私は使用しています動作するようになっている

<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> 
+0

私はrequire.jsが好きです。AMDモジュールのクロスドメインローディングに問題はありません。 – Lucero

0

別のオプションは、これです。 ".js"に注意してください。どういうわけかローダーはそれを別々に扱います。

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

参照:http://dojotoolkit.org/reference-guide/1.8/loader/amd.html

モジュールIDは、プロトコル(例えば、「HTTP」)で始まる場合、しないか、スラッシュ、または「の.js」接尾辞で終わる、リクエストのJavaScriptの任意のチャンクのためのものであると仮定モジュール。

これがベストプラクティスであるかどうかわかりません。

関連する問題