मैं कैसे पता लगा सकता हूं कि किसी स्थिति के लिए कौन सा तरीका सबसे अच्छा है? क्या कोई कार्यक्षमता और प्रदर्शन के मामले में अंतर जानने के लिए कुछ उदाहरण प्रदान कर सकता है?
मैं कैसे पता लगा सकता हूं कि किसी स्थिति के लिए कौन सा तरीका सबसे अच्छा है? क्या कोई कार्यक्षमता और प्रदर्शन के मामले में अंतर जानने के लिए कुछ उदाहरण प्रदान कर सकता है?
जवाबों:
XMLHttpRequest
कच्चे ब्राउज़र ऑब्जेक्ट है जो jQuery अधिक उपयोग करने योग्य और सरलीकृत रूप में लपेटता है और ब्राउज़र की निरंतर कार्यक्षमता को पार करता है।
jQuery.ajax
jQuery में एक सामान्य अजाक्स आवश्यकता है जो किसी भी प्रकार और सामग्री अनुरोधों को कर सकता है।
jQuery.get
और jQuery.post
दूसरी ओर केवल GET और POST अनुरोध जारी कर सकते हैं। यदि आप नहीं जानते कि ये क्या हैं, तो आपको HTTP प्रोटोकॉल की जाँच करनी चाहिए और थोड़ा सीखना चाहिए । आंतरिक रूप से ये दोनों फ़ंक्शन उपयोग करते हैं jQuery.ajax
लेकिन वे विशेष सेटिंग्स का उपयोग करते हैं जिन्हें आपको अपने आप को सेट करने की आवश्यकता नहीं होती है और उपयोग करने की तुलना में GET या POST अनुरोध को सरल बनाते हैं jQuery.ajax
। GET और POST को वैसे भी सबसे ज्यादा इस्तेमाल किया जाने वाला HTTP मेथड है (DELETE, PUT, HEAD या यहां तक कि अन्य शायद ही कभी इस्तेमाल किए गए एक्सोटिक्स की तुलना में)।
सभी jQuery फ़ंक्शंस XMLHttpRequest
पृष्ठभूमि में ऑब्जेक्ट का उपयोग करते हैं, लेकिन अतिरिक्त कार्यक्षमता प्रदान करते हैं जो आपको स्वयं नहीं करना है।
इसलिए यदि आप jQuery का उपयोग कर रहे हैं तो मैं दृढ़ता से अनुशंसा करता हूं कि आप केवल jQuery कार्यक्षमता का उपयोग करें । XMLHttpRequest
बिलकुल भूल जाओ । उपयुक्त jQuery अनुरोध फ़ंक्शन विविधताओं का उपयोग करें और अन्य सभी मामलों में उपयोग करें $.ajax()
। तो यह मत भूलो कि अन्य सामान्य jQuery के अजाक्स संबंधित कार्य हैं $.get()
, $.post()
और $.ajax()
। वैसे आप बस $.ajax()
अपने सभी अनुरोधों के लिए उपयोग कर सकते हैं, लेकिन आपको थोड़ा और कोड लिखना होगा, क्योंकि इसे कॉल करने के लिए थोड़ा और विकल्प चाहिए।
यह ऐसा है जैसे आप अपने आप को एक कार इंजन खरीदने में सक्षम होंगे, जिसे आपको स्टीयरिंग, ब्रेक आदि के साथ इसके चारों ओर एक पूरी कार बनानी होगी ... कार निर्माता एक पूर्ण इंटरफ़ेस (पैडल, स्टीयरिंग व्हील आदि) के साथ पूर्ण कार का उत्पादन करते हैं। इसलिए आपको यह सब खुद करने की जरूरत नहीं है।
$.post
और $.get
केवल एक ही चीज़ धीमी $.ajax
हो जाती है तो कोड की एक छोटी राशि होती है । लेकिन अगर आप XHR का उपयोग करके अपनी खुद की दिनचर्या लिखेंगे तो सीधे चीजें थोड़ी अनुकूलित हो सकती हैं, लेकिन अधिक छोटी गाड़ी हो सकती हैं। मेरा सुझाव है कि आप खुद को jQuery की तरफ रखें। यह आपके जीवन को आसान बना देगा। और इस तथ्य पर विचार करते हुए कि async कॉल इसे जारी करने वाले कोड की तुलना में अधिक समय ले रहा है, आप शायद इन कॉल्स के बीच कोई स्पष्ट अंतर नहीं देखेंगे।
$.ajax
यदि आप चाहें तो आप अपनी कॉल को हर जगह सुसंगत बनाने के लिए भी जा सकते हैं। जब तक आप सीधे एक्सएचआर का उपयोग नहीं करते हैं तब तक आप इसे किसी भी तरह से करना अच्छा है।
उनमें से हर एक XMLHttpRequest का उपयोग करता है। यह ब्राउज़र अनुरोध करने के लिए उपयोग करता है। jQuery सिर्फ एक जावास्क्रिप्ट लाइब्रेरी है और $ .ajax पद्धति का उपयोग XMLHttpRequest बनाने के लिए किया जाता है।
$ .post और $ .get सिर्फ शॉर्टहैंड संस्करण हैं $.ajax
। वे बहुत कुछ एक ही बात करते हैं, लेकिन यह AJAX अनुरोध लिखने के लिए जल्दी $.post
करता है - HTTP POST अनुरोध $.get
करता है और HTTP GET अनुरोध करता है।
GET
अनुरोध URL स्ट्रिंग में सभी डेटा भेजेगा - जिसे क्लाइंट / सर्वर ( stackoverflow.com/questions/2659952/… ) द्वारा सीमित किया जा सकता है । एक POST
अनुरोध हेडर में सभी डेटा भेजता है, इसलिए URL आकार की सीमा एक समस्या नहीं होनी चाहिए (जब तक कि आपके पास स्क्रिप्ट के लिए वास्तव में लंबी फ़ाइल और फ़ोल्डर नाम न हो!)।
GET
। यदि आप कुछ भेजना चाहते हैं (जैसे कि एक ट्वीट पोस्ट करना), तो उपयोग करें POST
,
jQuery.get
के लिए एक आवरण है jQuery.ajax
, जो XMLHttpRequest के लिए एक आवरण है।
XMLHttpRequest और Fetch API (इस समय प्रायोगिक) DOM में एकमात्र हैं, इसलिए इसे सबसे तेज़ होना चाहिए।
मैंने बहुत सारी जानकारी देखी जो अब सटीक नहीं है, इसलिए मैंने एक परीक्षण पृष्ठ बनाया जहां कोई भी संस्करण से संस्करण का परीक्षण कर सकता है, जो किसी भी समय सबसे अच्छा है:
https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch
मेरे परीक्षणों से आज पता चलता है कि केवल jQuery एक साफ या तेज समाधान नहीं है, मोबाइल या डेस्कटॉप में मेरे लिए परिणाम दिखाता है कि jQuery, XHR2 की तुलना में कम से कम 80% धीमा है, यदि आप बहुत ज्यादा अजाक्स का उपयोग कर रहे हैं, मोबाइल में साधारण साइट लोड करने में बहुत समय लगेगा।
उपयोग स्वयं लिंक में भी है।
jQuery.post और jQuery.get ठेठ पृष्ठ भार का अनुकरण करते हैं, जो कहना है, आप सबमिट बटन पर क्लिक करते हैं और यह आपको एक नए पृष्ठ पर ले जाता है (या उसी पृष्ठ को पुनः लोड करता है)। पोस्ट और डेटा को सर्वर में भेजे जाने के तरीके से थोड़ा भिन्न होता है (इसके बारे में अच्छा लेख यहां पाया जा सकता है ।
jQuery.ajax और XMLHttpRequest पृष्ठ लोड और पोस्ट के समान हैं, सिवाय इसके कि पेज नहीं बदलता है। जो भी जानकारी सर्वर रिटर्न का उपयोग करता है वह जावास्क्रिप्ट द्वारा स्थानीय रूप से किसी भी तरह से उपयोग किया जा सकता है, जिसमें पेज लेआउट को संशोधित करना शामिल है। वे आमतौर पर अतुल्यकालिक काम करने के लिए उपयोग किए जाते हैं, जबकि उपयोगकर्ता अभी भी पृष्ठ को नेविगेट कर सकता है। इसका एक अच्छा उदाहरण एक पाठ क्षेत्र को पूरा करने के लिए डेटाबेस मूल्यों से गतिशील रूप से लोड करके स्वत: पूर्ण क्षमता होगा। JQuery.ajax और XMLHttpRequest के बीच मूलभूत अंतर यह है कि jQuery.ajax एक ही प्रभाव को प्राप्त करने के लिए XMLHttpRequest का उपयोग करता है लेकिन एक सरल इंटरफ़ेस के साथ। यदि आप jQuery का उपयोग करते हैं तो मैं आपको jQuery.ajax के साथ रहने के लिए प्रोत्साहित करूंगा।
पुरानी पोस्ट। लेकिन फिर भी जवाब देना चाहता हूं, एक अंतर जो मुझे वेब वर्कर्स (जावास्क्रिप्ट) के साथ काम करते समय सामना करना पड़ा
वेब कर्मचारियों के पास किसी भी यूआई-स्तरीय पहुंच नहीं हो सकती है। इसका मतलब है कि आप जावास्क्रिप्ट कोड में किसी भी DOM तत्वों का उपयोग नहीं कर सकते हैं, जिसे आप वेब वर्कर का उपयोग करके चलाने का इरादा रखते हैं। जैसे कि विंडो, डॉक्यूमेंट और पैरेंट को वेब-वर्कर कोड में एक्सेस नहीं किया जा सकता।
जैसा कि हम जानते हैं कि jQuery लाइब्रेरी HTML DOM से जुड़ी हुई है, और यह अनुमति देता है कि वह "No DOM एक्सेस" नियम का उल्लंघन करेगी। यह थोड़ा दर्दनाक हो सकता है क्योंकि jQuery.ajax, jQuery.post, jQuery.get जैसे तरीकों का उपयोग वेब श्रमिकों में नहीं किया जा सकता है। सौभाग्य से, आप Ajax अनुरोध करने के लिए XMLHttpRequest ऑब्जेक्ट का उपयोग कर सकते हैं ।
जहाँ तक jQuery के तरीके जाते हैं, .post
और .get
बस .ajax
आंतरिक रूप से करते हैं , उनका उद्देश्य कुछ अनावश्यक विकल्पों को दूर करना है .ajax
और क्रमशः उस प्रकार के अनुरोध के लिए उपयुक्त कुछ चूक प्रदान करना है।
मुझे लगता है कि 3 में से किसी के बीच प्रदर्शन में बहुत अंतर है।
.ajax
अपने आप में विधि एक XMLHttpRequest, यह भारी jQuery के बाकी के अनुसार अनुकूलित किया जाना होगा, लेकिन के रूप में यदि आप पूरी बातचीत खुद के अनुरूप यह शायद कुशल के रूप में नहीं किया जाएगा करता है .. लेकिन यह है कि कोड के बहुत सारे या लेखन के बीच का अंतर है लेखन jQuery.ajax
।