2012-01-03 13 views
10

मैं Google के सीडीएन का उपयोग कर रहा हूं और अपने लोडर का उपयोग करके अपने स्वयं के एएमडी मॉड्यूल लोड करने की भी कोशिश कर रहा हूं। मुझे पता है कि मैं कुछ गलत कर रहा हूं लेकिन मैं अटक गया हूं। कोई विचार?सीडीएन के माध्यम से डोजो का उपयोग करते समय कस्टम एएमडी मॉड्यूल कैसे लोड करें?

<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

मुझे पता चला कि यह कैसे करें: 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 पसंद है - इसमें एएमडी मॉड्यूल के क्रॉस-डोमेन लोडिंग के साथ कोई समस्या नहीं है। – Lucero

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 का एक मनमाना हिस्सा है, न कि के लिए है मॉड्यूल।

मुझे नहीं पता कि यह सर्वोत्तम अभ्यास है या नहीं।

संबंधित मुद्दे