2010-03-06 16 views
20

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

<script src="a.js"></script> 
<script src="b.js"></script> 
<script src="c.js"></script> 

है मुझे लगता है a.js पहले डाउनलोड किया जाता है, तो b.js और अंत में c.js या वे समवर्ती डाउनलोड किया जा रहा है? निष्पादन के बारे में क्या? क्या हेडर में स्क्रिप्ट्स शरीर में किसी के ऊपर पसंद करते हैं?

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

+0

अपने कोड में जावा स्क्रिप्ट फ़ाइल जोड़ना, यह कोड में जावास्क्रिप्ट कोड को शामिल करना है। (जैसे हमें PHP में आवश्यकता या शामिल करना है)। – Pavunkumar

+0

और साथ ही, यह घटनाओं के आधार पर आपके द्वारा कॉल किए गए फ़ंक्शन के अनुसार – Pavunkumar

+1

विषय पर कुछ अच्छा पढ़ता है: http://www.stevesouders.com/blog/2010/02/07/browser-script-loading -roundup/http://www.stevesouders.com/blog/2009/05/06/positioning-inline-scripts/ http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without -ब्लॉकिंग/और एक अच्छा गैर-अवरुद्ध समाधान: http://labjs.com/ – hojberg

उत्तर

14

लिपियों को समानांतर में डाउनलोड किया जाता है, लेकिन वे HTML में दिखाई देने वाले क्रम में पार्स किए जाते हैं और निष्पादित होते हैं, पृष्ठ पर अन्य क्रियाओं को अवरुद्ध करते हैं (प्रतिपादन सहित) जब तक वे निष्पादित नहीं होते हैं। स्क्रिप्ट्स को गैर-अवरुद्ध होने के लिए संभव है, अगर वे उदाहरण के लिए डीओएम के माध्यम से जावास्क्रिप्ट कोड द्वारा जोड़े गए हैं, या यदि async attribute फ़ायरफ़ॉक्स के नवीनतम संस्करणों में मौजूद है।

+1

स्क्रिप्ट समानांतर में डाउनलोड होते हैं, लेकिन यदि 'b.js'' b.js' या 'a.js' से पहले डाउनलोड किया गया है तो ब्राउज़र होगा पिछली स्क्रिप्ट डाउनलोड होने तक 'c.js' निष्पादित करने के लिए निष्पादित और निष्पादित होने तक प्रतीक्षा करें। – AxeEffect

3

जावास्क्रिप्ट डाउनलोड को मुख्य रूप से आपके ब्राउज़र पर नियंत्रण देता है। यदि आप उन्हें एक ही डोमेन से लोड करते हैं, जैसे आप ऊपर कर रहे हैं, तो वे एक के बाद एक लोड हो जाएंगे, इसलिए आपके द्वारा निर्दिष्ट क्रम पर लोड किया जाएगा।

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

लोडिंग की प्राथमिकता के संबंध में, अधिकांश वेबसाइट ऑप्टिमाइज़ेशन पुस्तकें आपको अपनी जेएस फाइलों को बहुत नीचे लोड करने के लिए कहेंगी, क्योंकि यह आपके पृष्ठ को तेज़ी से लोड कर देगा, और जेएस फ़िल को आवश्यक अंतिम संसाधन के रूप में लोड किया जाएगा । यह देखभाल के साथ किया जाना चाहिए, यदि आपके पृष्ठ सीधे लोड होने पर जावास्क्रिप्ट पर भरोसा करते हैं, तो आप अंतहीन जेएस त्रुटियों के साथ समाप्त हो सकते हैं।

जेक्वायरी जैसी पुस्तकालयों के साथ बहुत मदद मिलेगी, क्योंकि डीओएम उपलब्ध होने के बाद, वे केवल जेएस कार्रवाई होने देंगे, इसलिए एचटीएमएल के नीचे जेएस लोड होने पर कोई जेएस त्रुटियां नहीं होती हैं।

करने के लिए एक और दिलचस्प बात यह सुनिश्चित कर लें कि आप अपनी जेएस फाइलों को सही तरीके से छोटा रखें, और ऐसा करने के लिए न्यूनतम फाइलों के साथ चिपके रहें, ऐसा करने के लिए, आप केवल कुछ सर्वर अनुरोध कर रहे हैं, और मेरे पास आपकी जावास्क्रिप्ट होगी कम समय में आसानी से उपलब्ध है।

उम्मीद है कि यह आपकी मदद करता है।

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