मुझे पता है कि यह प्रश्न अक्सर समान भिन्नताओं में आया है, लेकिन कोई समाधान मेरी आवश्यकताओं को पूरी तरह फिट करने के लिए प्रतीत नहीं होता है। मेरे पास निम्न समस्या है:निर्भरताओं के साथ जावास्क्रिप्ट फ़ाइलों को संयोजित करने और उन्हें मॉड्यूल के रूप में आउटपुट करने का सबसे अच्छा तरीका?
विकास में मैं एकाधिक जेएस फाइलों (प्रत्येक फ़ाइल "ऑब्जेक्ट") का उपयोग करता हूं। इन जेएस फाइलों में एक दूसरे के भीतर कई निर्भरताएं हैं - कुछ दूसरों पर भरोसा करते हैं और मुझे उन्हें पहले लोड करना होगा। वर्तमान में मैं प्रत्येक जेएस फ़ाइल को सही क्रम में लोड करने के लिए RequJS का उपयोग करता हूं, इसलिए मैं प्रत्येक फ़ाइल के लिए एक मॉड्यूल परिभाषित करता हूं। ठीक है और बांका। लेकिन अब मैं अपनी सभी जेएस फ़ाइलों को एक बड़ी जेएस फ़ाइल में जोड़ना चाहता हूं जो मॉड्यूल स्वयं होना चाहिए। मैं ऐसा करने के लिए RequJS अनुकूलक r.js का उपयोग करता हूं। मेरी समस्या: प्रत्येक जेएस फ़ाइल एक बड़ी जेएस फ़ाइल से जुड़ा हुआ है, लेकिन प्रत्येक ऑब्जेक्ट के लिए मॉड्यूल परिभाषा को शामिल किया गया है। मेरे पास एक बड़ी फाइल में एक बड़ा मॉड्यूल नहीं है, लेकिन एक बड़ी फाइल में कई मॉड्यूल हैं।
इसके बाद मैंने संगतता के लिए कड़वाहट की कोशिश की जो ठीक काम करता है, लेकिन फ़ाइलों की निर्भरताओं को अनदेखा करता है। यह सिर्फ प्रत्येक फ़ाइल को वर्णानुक्रम में संगत करता है या मुझे अपने gruntfile में ऑर्डर को हार्डकोड करना होगा।
मैं इसे कैसे हल कर सकता हूं?
बस मेरी समस्या का एक उदाहरण के रूप में: मैं फ़ाइलें निम्न है (छद्म कोड):
FileA
- define FileA module
- depends on FileB
- FileA Logic
FileB
- define FileB module
- FileB Logic
और मैं इस उत्पादन हैं:
LibFile
- define LibFile module
- FileB Logic, FileA Logic
लेकिन मैं r.js के साथ इस मिल (फाइलए और फाइलबी से मॉड्यूल परिभाषा की प्रतिलिपि बनाई गई है):
LibFile
- define FileB module
- FileB Logic
- define FileA module
- depends on FileB
- FileA Logic
और मुझे यह डब्ल्यू मिलता है ith घुरघुराना (गलत क्रम):
LibFile
- FileA Logic
- FileB Logic
हो सकता है कि सवाल थोड़ा बेवकूफ है, लेकिन मैं सिर्फ उपकरण हर कोई उपयोग करने के लिए लगता है के साथ इस का समाधान नहीं कर सकते हैं ... मैं घुरघुराना-requirejs प्लगइन की कोशिश की, भी। लेकिन यह कई त्रुटियों को फेंकता है जो मैं हल नहीं कर सका।
धन्यवाद, Pipo
उन सब क्यों हो रही एक समस्या है ? यदि आप छोटे पैकेज को पंजीकृत करने के लिए "पैकेज" प्रतिमान का उपयोग करते हैं, तो आप उस फ़ाइल का उपयोग मॉड्यूल के रूप में कर सकते हैं ... – ZenMaster
हाय जेनमास्टर, "पैकेज" प्रतिमान के साथ आपका क्या मतलब है? मैंने "परिभाषित ([" ./ fileB "], फ़ंक्शन (fileB) {// फ़ाइल ए के लिए कुछ कोड; फ़ाइल लौटाएं;});" मेरे मॉड्यूल को परिभाषित करने के लिए। लेकिन अगर मेरे पास बड़ी फ़ाइल में इस तरह के कई छोटे मॉड्यूल हैं और मैं इस फ़ाइल को परिभाषित करने की कोशिश करता हूं जैसे "परिभाषित ([" ./ LibFile "], फ़ंक्शन (LibFile) {// कुछ कोड;});" LibFile अपरिभाषित है। मुझे बड़ी फाइल को एक मॉड्यूल के रूप में आवश्यकता नहीं हो सकती है। – Pipo
उत्तर देखें। उम्मीद है की वो मदद करदे। – ZenMaster