एक जावास्क्रिप्ट Asynch-Loader चुनना [बंद]


9

मैं विभिन्न अतुल्यकालिक संसाधन-लोडरों को देख रहा हूं और मुझे यकीन नहीं है कि कौन सा अभी तक उपयोग करना है। जहां मैं काम करता हूं, हमारे पास समूह-प्रयास हैं जिनके वर्ग-मॉड्यूल jQuery (आदि) के विभिन्न संस्करणों का उपयोग कर सकते हैं। जैसे, नेस्टेड निर्भरताएँ भिन्न हो सकती हैं, साथ ही साथ। मेरा इस पर कोई नियंत्रण नहीं है, इसलिए इसका मतलब है कि मुझे उन संसाधनों को गतिशील रूप से लोड करने की आवश्यकता है जो एक ही पुस्तकालय के वैकल्पिक संस्करणों का उपयोग कर सकते हैं।

जैसे, यहाँ मेरी आवश्यकताएं हैं:

  1. जावास्क्रिप्ट और सीएसएस संसाधन फ़ाइलों को अतुल्यकालिक रूप से लोड करें।
  2. संस्करणों में निर्भरता-क्रम और नेस्टेड-निर्भरताएं प्रबंधित करें।
  3. पता लगाएँ कि क्या कोई संसाधन पहले से लोड है।
  4. क्रॉस-डोमेन लोडिंग (CDN) के लिए अनुमति देना चाहिए
  5. (वैकल्पिक) हमें एक संसाधन को उतारने की अनुमति दें।

मैं देख रहा हूँ:

मैं संस्करणों को ठीक से नामांकित चर में लोड करके और पहले से ही लोड की गई चीजों को ट्रैक करने के लिए एक सरणी का उपयोग करके स्वयं इन आवश्यकताओं को नकली करने में सक्षम हो सकता हूं ... लेकिन (उम्मीद है) किसी ने पहले ही इसका आविष्कार किया है।

तो मेरे सवाल हैं:

  • आप किन लोगों का उपयोग करते हैं? और क्यों?
  • क्या अन्य हैं जो मेरी आवश्यकताओं को पूरी तरह से संतुष्ट करते हैं?
  • आपको किसके साथ काम करने में सबसे अधिक सुगम और सबसे आसान लगता है? और क्यों?

अद्यतन:
रुचि रखने वालों के लिए, मैंने ऊपर (और अधिक) सभी AMD पुस्तकालयों की कोशिश की। अंत में, मैं साथ चला गया RequireJS । यह सिर्फ क्लीनर है और समग्र रूप से आसान है ... और मुझे इसका उपयोग करने की खुशी है।


जावास्क्रिप्ट के लिए, मुझे नहीं लगता कि # 5 भी संभव है। यह सीएसएस के लिए सैद्धांतिक रूप से संभव हो सकता है, लेकिन मुझे यकीन नहीं है कि कोई ब्राउज़र समर्थन करता है।
माइक बैरकज़क

@ माइक टिप्पणी करने के लिए धन्यवाद! यदि asynch-loader ने ऑब्जेक्ट-चर का उपयोग करके ट्रैक्ड और पॉपुलेटेड संसाधन ... यह पूरी तरह से संभव है।
कैदी जीरो

सही है, लेकिन नया कंस्ट्रक्टर ऑब्जेक्ट को डुप्लिकेट करेगा, इसलिए यदि आप किसी नई चीज़ का निर्माण करते हैं जिसे आपने कॉल किया है, तो यह अभी भी वहां मौजूद रहेगा। आप इसे वैसे भी क्यों उतारेंगे?
गुप्त

@ user1525 टिप्पणी करने के लिए धन्यवाद! अनलोडिंग संसाधन स्मृति पर बचाता है। मैं अपनी टिप्पणी (कुछ मिनटों में) पर कुछ विचारों के साथ अपने प्रश्न को ऊपर संपादित करूँगा। एक बार फिर धन्यवाद!
कैदी जीरो

jQuery में पहले से ही getScriptस्क्रिप्ट इंजेक्शन के लिए एक फ़ंक्शन है।
zzzzBov

जवाबों:


7

मैंने गंभीर परियोजनाओं पर आवश्यकताएँ का उपयोग किया है, और मुझे यह पसंद है, लेकिन यह वास्तव में एक अतुल्यकालिक लोडर होने का मतलब नहीं है। यह वास्तव में एक मॉड्यूल सिस्टम है। उस लक्ष्य की सेवा में अतुल्यकालिक लोडिंग प्रदान की जाती है। इसे आपकी किसी भी आवश्यकता को पूरा करने के लिए धकेला जा सकता है, लेकिन इसकी लोडिंग सेवाओं को मॉड्यूल लोड करने के लिए डिज़ाइन किया गया है, न कि मनमानी फ़ाइलों के लिए।

जावास्क्रिप्ट और सीएसएस संसाधन फ़ाइलों को अतुल्यकालिक रूप से लोड करें : आवश्यकताएं किसी भी मॉड्यूल को लोड करती हैं जो आपको स्क्रिप्ट टैग इंजेक्शन का उपयोग करने की आवश्यकता होती है, इसलिए अतुल्यकालिक रूप से।

संस्करणों में निर्भरता-क्रम और नेस्टेड-निर्भरताएं प्रबंधित करें : यह वह जगह है जहां आवश्यकताएं चमकती हैं। मॉड्यूल अन्य मॉड्यूल पर निर्भरता की घोषणा कर सकते हैं, और लोड ऑर्डर को उस निर्भरता घोषणा से अलग किया जाएगा। एक ऑर्डर प्लगइन भी है, जो निर्भरता पर आदेश को बाध्य कर सकता है।

पता लगाएँ कि क्या कोई संसाधन पहले से लोड है : आवश्यकताएँ केवल एक बार एक मॉड्यूल लोड करेंगी।

क्रॉस-डोमेन लोडिंग (सीडीएन) के लिए अनुमति देना चाहिए : यह संभव है, लेकिन कुछ कॉन्फ़िगरेशन की आवश्यकता होती है; आप किसी भी मॉड्यूल के लिए एक विशिष्ट URL सेट कर सकते हैं, और यह डिफ़ॉल्ट स्थान को ओवरराइड करेगा, जिससे आप इसे CDN पर सेट कर सकते हैं।

यदि आप इसके प्रारूप का उपयोग करके मॉड्यूल लिखते हैं, और यदि आप इसका उपयोग कच्ची जावास्क्रिप्ट को लोड करने के लिए कर रहे हैं, तो सबसे प्रभावी होगा।

यह एक निर्माण प्रक्रिया भी प्रदान करता है जो आपके मॉड्यूल को उत्पादन के लिए एक एकल फ़ाइल में एक साथ विलय कर देगा।


3

आप सिद्धांत रूप में बस पहले से भरी हुई लिपियों की एक सूची रख सकते हैं, और एक फ़ंक्शन बना सकते हैं जो उन लिपियों को लोड करता है जो अभी तक लोड नहीं किए गए हैं।

http://jsfiddle.net/BDG/Dhdu7/2/


2
या कर्ल / आवश्यकताएँ का उपयोग करें उनके पास यह और अधिक सुविधाएँ हैं। और आपको इसे स्वयं बनाए रखने की आवश्यकता नहीं है;)
रेयोनोस

आप स्पष्ट संरचना और गैर-सापेक्ष का उल्लेख करना भूल गए हैं।
गुप्त

2

यदि आप आवश्यकताएँ देख रहे हैं और CSS फाइलों पर निर्भर रहना चाहते हैं, तो आप CSSP आवश्यकताएँJJ प्लगइन की जाँच कर सकते हैं :

पैडिंग के साथ सीएसएस। इस परियोजना के लागू के लिए एक प्लगइन RequireJS परियोजना है कि निर्भरता के रूप में सूची सीएसएस फ़ाइलों के लिए मॉड्यूल की अनुमति देता है। यह जावास्क्रिप्ट की प्रतीक्षा करता है जब तक कि विशिष्ट स्टाइल नियमों को तब तक इंतजार नहीं किया जाता है जब तक कि जावास्क्रिप्ट मॉड्यूल का मूल्यांकन करने से पहले इसे प्रभावी नहीं किया जाता है। यह उपयोगी होगा, उदाहरण के लिए, यदि आपके जावास्क्रिप्ट मॉड्यूल को कुछ सीएसएस नियमों की आवश्यकता होती है, तो एक अलग फाइल में परिभाषित किया जा सकता है, इसे आरंभ होने से पहले डोम पर लागू किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.