मैं वैकल्पिक रूप से मॉड्यूल को परिभाषित करने में सक्षम होना चाहता हूं और फिर इसे अपने कोड में उपयोग कर सकता हूं या नहीं। मैं जिस विशेष स्थिति पर विचार कर रहा हूं वह डीबग/टेस्ट पर्यावरण में नकली/स्टब मॉड्यूल लोड कर रहा है लेकिन जब मैं लाइव नहीं हूं।requjs के साथ यह जांचना संभव है कि मॉड्यूल को लोड करने का प्रयास किए बिना परिभाषित किया गया है या नहीं?
html फ़ाइल जे एस फ़ाइलें वैकल्पिक रूप से लोड किया जा सकता है (छद्म कोड) में:
//index.cshtml
...
<script src="/Scripts/lib/require.js"></script>
<script src="/Scripts/app/service_user.js"></script>
<script src="/Scripts/app/real_service.js"></script>
#if DEBUG
<script src="/Scripts/app/mock_service.js"></script>
#endif
में दोनों real_service और mock_service ऊपर डिबग संस्करण में लोड किया जाना चाहिए यहाँ उदाहरण है।
प्रत्येक मॉड्यूल requirejs का उपयोग कर, जैसे परिभाषित किया जाएगा: की जाँच करने के
//mock_service.js
define('mock_service', [],
function() {
...
});
//real_service.js
define('real_service', [],
function() {
...
});
फिर जब सेवा का उपयोग कर रहा चाहें तो mock_service परिभाषित किया गया है:
//service_user.js
define(['require', 'real_service'],
function (require, real_service) {
if (require.isDefined('mock_service')) { // 'isDefined' is what I wish was available
var mock = require('mock_service');
mock.init(real_service);
}
...
});
तो मेरी काल्पनिक ' परिभाषित किया गया है 'फ़ंक्शन परिभाषित किए गए दिए गए नाम (या नाम?) के साथ बस एक मॉड्यूल की जांच करेगा। फिर मेरे कोड में, यदि यह परिभाषित किया गया है तो मुझे इसकी आवश्यकता हो सकती है और इसका उपयोग कर सकते हैं। यदि नहीं, तो यह भी ठीक है।
मेरे लिए महत्वपूर्ण बात यह है कि वैकल्पिक मॉड्यूल को लोड करने का कोई प्रयास नहीं किया जाता है। मैं आवश्यकता कथन के चारों ओर कोशिश/पकड़ सकता हूं लेकिन इससे सर्वर से इसे लोड करने का प्रयास होगा और मुझे वह नहीं चाहिए।
एक और विकल्प यह तय करना होगा कि मैं हमेशा लोड करता हूं और इसलिए हमेशा एक नकली आवश्यकता होती है जिसके लिए मैं पूछताछ कर सकता हूं कि यह वास्तविक है या नहीं, लेकिन यह भी अपमानजनक लगता है।
क्या वहां कोई भी है जो आवश्यकतानुसार गहराई से है। जेएस ने पाया है कि उन्हें इस कार्यक्षमता की आवश्यकता है और कार्यान्वयन के लिए एक रणनीति तैयार की है?
अग्रिम धन्यवाद, रोब
Thx - यह लगभग मेरी ज़रूरतों को पूरा करता है और मुझे सही उत्तर खोजने में मदद करता है जिसे मैंने अभी जोड़ा है और पूर्ण समाधान के रूप में चिह्नित किया है। – WooWaaBob
+1 महान उत्तर और एक अच्छी सुविधा, इस बारे में नहीं पता था! – thomaux
सिर्फ उत्सुक, यदि बादाम संस्करण में कोई विकल्प है? –