2012-01-03 15 views
10

Sto usando il CDN di Google e sto anche provando a caricare i miei moduli AMD usando il loro caricatore. So che sto facendo qualcosa di sbagliato ma sono bloccato. Qualche idea?Come caricare i moduli AMD personalizzati quando si utilizza Dojo tramite CDN?

<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 è la posizione del modulo.

risposta

11

Ho scoperto come farlo qui: http://dojotoolkit.org/reference-guide/quickstart/cross-domain.html in "Uso di CDN con moduli locali".

L'esempio dalla pagina:

<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

Ecco perché mi piace require.js - non ha problemi con il caricamento cross-domain dei moduli AMD. – Lucero

0

Un'altra opzione che si suppone di lavorare, che sto usando è questo. Nota ".js". In qualche modo il caricatore lo tratta in modo diverso.

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

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

Se moduleId inizia con un protocollo (ad esempio, “http:”) o un attaccante-slash, o finisce con un suffisso”.js”, assumere la richiesta è per un pezzo arbitrario di JavaScript, non un modulo.

Quello che non so è se questa è la pratica migliore o no.

Problemi correlati