AJAX

2010-07-16 13 views
5

के माध्यम से जावास्क्रिप्ट लोड करने के लिए अच्छी अभ्यास विधि अस्वीकरण: मैं AJAX के लिए बिल्कुल नया हूं!AJAX

मैंने चारों ओर देखा है, और मुझे यकीन नहीं है कि AJAX का उपयोग कर जावास्क्रिप्ट लोड करने के लिए किस विधि का उपयोग करना है।

मैं उन पृष्ठों का अनुरोध करने के लिए AJAX का उपयोग कर रहा हूं जिनमें प्रत्येक को अपनी 6-10 छोटी विधियों की आवश्यकता होती है। कुल मिलाकर इन पृष्ठों में से 5-6 हो सकते हैं, इसलिए अनुमानित कुल 35+ विधियां।

मैं आवश्यक जावास्क्रिप्ट को प्रत्येक पृष्ठ के रूप में एक्सेस करना पसंद करूंगा जिसके लिए इसे लोड करना आवश्यक है।

मैं कुछ तरीकों को देखा है, और मुझे यकीन है कि जो एक सबसे अच्छा मेरी आवश्यकताओं के अनुरूप होगा नहीं कर रहा हूँ:

  1. सिर में एक खाली स्क्रिप्ट तत्व को शामिल करें, और के माध्यम से src विशेषता में हेरफेर। डोम

  2. के माध्यम से एक नया स्क्रिप्ट तत्व बनाएँ। डीओएम और इसे दस्तावेज़ में जोड़ दें। कोई (यह # 1 जैसा ही लगता है)।

  3. jQuery (जो मैं पहले से उपयोग कर रहा हूं) में AJAX getScript() विधि है।
  4. मैंने इसके बारे में कुछ भी नहीं पढ़ा है, लेकिन क्या मैं AJAX प्रतिक्रिया के हिस्से के रूप में केवल एक स्क्रिप्ट तत्व शामिल कर सकता हूं?

जैसा कि मैं सामान्य रूप से AJAX और वेब विकास के लिए नया हूं, मैं प्रत्येक विधि के अप और डाउन के साथ-साथ किसी भी तरीके को याद करने के लिए उत्सुक हूं।

कुछ चिंताओं हैं: - एक कैश की गई प्रतिलिपि बनाई जाएगी या जब भी एजेक्स अनुरोध किया जाता है तो स्क्रिप्ट डाउनलोड होगा। ध्यान दें कि स्क्रिप्ट स्थिर होगी। -ब्रोसर संगतता। मैं क्रोम का उपयोग करता हूं, लेकिन यह ऐप IE> = 7 के साथ-साथ फ़ायरफ़ॉक्स के संस्करणों में भी उपयोग किया जाएगा।

+2

क्यों नहीं सिर्फ एक बाहरी फ़ाइल है? यदि ये बहुत छोटी विधियां हैं, तो एक फ़ाइल को gzipped और कैश किया जाएगा और क्लाइंट के लिए नगण्य होगा, और आपके रखरखाव को एक '

0

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

AJAX प्रतिक्रिया केवल डीओएम के संबंध में टेक्स्ट है। इसका कोई प्रभाव नहीं पड़ता है जब तक कि आप किसी भी तरह से डोम में डालें।

+0

मैं * के खिलाफ * * $ .getScript() 'जानबूझकर कैश नहीं करता, आप यहां देख सकते हैं: http://github.com/jquery/jquery/blob/master/src/ajax.js#L265 –

+0

मैं निक से सहमत हूं, स्क्रिप्ट डेटा टाइप के साथ $ .ajax तरीका पर जाएं। –

+0

@ निक @ जुलिएन - अच्छे अंक, मुझे यूआरएल में टाइमस्टैम्प में jQuery स्नीकिंग के बारे में पता नहीं था :)। मैं सिर्फ 'AJAXSetup' कहता हूं कि पूरे पास स्थायी कैशिंग हो, या इससे भी बेहतर [ओवरराइट] (http://jamiethompson.co.uk/web/2008/07/21/jquerygetscript-does-not-cache/) मूल 'getScript वैकल्पिक रूप से कैशिंग को अनुमति देने की विधि, और अभी भी पीछे की तरफ संगत है। अगर jQuery इसे चूक गया, तो हम नहीं करेंगे। क्या यह जावास्क्रिप्ट के बारे में सब कुछ नहीं है? : पी – Anurag

1

सभी अन्य उत्तर के रूप में यहाँ सिर्फ कहते हैं कि "उपयोग jQuery" किसी भी आगे की जानकारी/स्पष्टीकरण/औचित्य के बिना, यह शायद लायक वास्तव में को देखने या आपके द्वारा उल्लिखित अन्य विकल्प।

  • विकल्प # 1

    के रूप में यह जब तक एक स्क्रिप्ट डाउनलोड है प्रतीक्षा करें और अगले एक को लाते समय से पहले चलाने के लिए आवश्यक है कि आप थोड़ा जटिल हो सकता है (आप केवल एक स्क्रिप्ट तत्व है के रूप में)।के रूप में आप से पहले पहले एक डाउनलोड/निष्पादन को प्रभावित किए बिना, डाउनलोड समाप्त हो गया है डोम के लिए एक दूसरी स्क्रिप्ट तत्व जोड़ सकते हैं

  • विकल्प # 2

    बेहतर है।

  • विकल्प # 3

    मेरे सामने हर किसी के द्वारा की सिफारिश की है, ठीक है अगर आप एक jQuery वातावरण में कर रहे हैं और पहले से ही अन्य उपयोगों के लिए (काफी भारी) jQuery पुस्तकालय लोड हो रहा है - यह अकेले के लिए यह लोड हो रहा है स्पष्ट रूप से ज़रूरत से ज़्यादा है । यह भी ध्यान देने योग्य है कि $.getScript() और $.ajax() दोनों स्क्रिप्ट निष्पादित करने के लिए eval() का उपयोग करें। eval() इस संदर्भ में "बुराई" नहीं है क्योंकि यह एक विश्वसनीय स्रोत है, लेकिन यह मेरे अनुभव में कभी-कभी eval() - ed code को डीबग करना थोड़ा मुश्किल हो सकता है।

  • विकल्प # 4

    संभव नहीं है। अगर स्क्रिप्ट के रूप में आप कहते हैं कि स्थिर हैं, कैशिंग कई HTTP अनुरोध तुलना में अधिक कुशल हो जाएगा -

  • विकल्प # 5

    पहले ओपी टिप्पणी में निक Craver द्वारा सिफारिश की है कि मैं क्या tbh के साथ जाना चाहते हैं। तुम भी आक्रामक कैशिंग के लिए एक cache.manifest का उपयोग कर इस पर गौर कर सकता है यदि आप विशेष रूप से बैंडविड्थ को लेकर चिंतित हैं: http://www.html5rocks.com/tutorials/appcache/beginner/