2011-12-10 15 views
37

मैं बस requ.js के साथ शुरू कर रहा हूँ। मैंने सफलतापूर्वक jquery, कुछ प्लगइन्स, और मेरे कुछ मॉड्यूल लपेट लिया है। मैं फायरबग (या Google क्रोम के जेएस कंसोल) से अपने मॉड्यूल (या jquery) के साथ बातचीत करने की कोशिश कर रहा हूं, और मुझे बहुत भाग्य नहीं है।फ़ायरबग/क्रोम कंसोल से require.js मॉड्यूल के साथ बातचीत?

कंसोल से इन मॉड्यूल तक पहुंचने का सही तरीका क्या है?

उत्तर

52

कहते हैं कि हम है कि कुछ तरीकों रिटर्न मॉड्यूल /app/scripts/methodsModule.js है:

define({ 
    someMethod: function() { 
     // do stuff 
    }, 
    anotherMethod: function() { 
     // do some more stuff 
    } 
}); 

हमारे डेटा-मुख्य फ़ाइल /app/scripts/main.js में हमने:

require(['methodsModule'], function(methods) { 
    methods.someMethod() // call someMethod 
    methods.anotherMethod() // call anotherMethod 
}) 

>> methods = require('methodsModule'); // requireJS has module methodsModule stored 
>> methods.someMethod() // call someMethod 
>> methods.anotherMethod() // call anotherMethod 
:

एक बार लोड अप requireJS हमारे डेटा-मुख्य, हम किसी भी मॉड्यूल है कि पहले से ही ऐसा है जैसे javaScript कंसोल कमांड लाइन से requireJS द्वारा लोड किया गया है का उपयोग कर सकते

एक मॉड्यूल एक कॉल द्वारा लोड नहीं किया गया है की आवश्यकता होती है() या परिभाषित करते हैं(), हम कॉल करने के लिए समारोह की आवश्यकता होती है के बाद मॉड्यूल लोड किया गया है के लिए अपने स्वयं के कॉलबैक पारित करने के लिए है:

>> myCB = function(methods) { methods.someMethod() } 
>> require(['methodsModule'], myCB) 

अन्यथा , requireJS एक त्रुटि कहता है कि मॉड्यूल अभी तक लोड नहीं हुआ है ..

+1

क्या यह आवश्यक जेएस "अनुकूलित" स्क्रिप्ट के साथ काम करता है? शायद मैं यहाँ कुछ गलत कर रहा हूं, लेकिन यह मेरे लिए काम नहीं कर रहा था। – Stephen

+0

अभी भी 05/20/2015 के रूप में मान्य है। एक "आदिम" परियोजना को एएमडी में परिवर्तित करने में, मुझे यह सुनिश्चित करने की आवश्यकता थी कि सब कुछ काम कर रहा था। हालांकि, मैं निष्पादित परिभाषित करने के बाद वापस लौटाया गया मॉड्यूल ऑब्जेक्ट कहां जा रहा था, यह पता नहीं लगा सका। महान स्पष्टीकरण। –

12

कॉलबैक का उपयोग किए बिना एक तरीका है।

यदि आप मॉड्यूल कंसोल में की आवश्यकता नहीं थी या इससे पहले कि आप आवेदन, तो आप सिर्फ यह पहली आवश्यकता होती है सकते हैं:

require(['methodsModule']); 
है कि आप उपयोग कर सकते हैं "डायनामिक" के बाद

इसे उपयोग करने की आवश्यकता होती है:

require('methodsModule').someMethod(); 
+0

जो मैं कोशिश कर रहा था उससे गंभीरता से आसान था, '+ 0.1E1'। मैं बस आसान पहुंच के लिए खिड़की पर मॉड्यूल लोड करना पसंद करते हैं। 'की आवश्यकता होती है ([मीटर = 'lib/imagesLoaded']); imagesLoaded = (एम) की आवश्यकता होती है; ' – Orwellophile