2011-04-01 8 views
12

यह किसी भी चीज़ की तुलना में शैली और वरीयता का एक प्रश्न है, हालांकि यह संभव है कि प्रदर्शन विचार भी हो।यदि आप पहले से ही ढांचे का उपयोग कर रहे हैं, तो क्या आपको कभी भी "सादे वेनिला" जेएस लिखना नहीं चाहिए?

यदि आप ढांचे का उपयोग कर रहे हैं (तर्क के लिए jQuery कहें, हालांकि यह कोई ढांचा हो सकता है) और आपको एक नया फ़ंक्शन लिखना होगा। यह एक साधारण काम है, और आप आसानी से ढांचे का उपयोग किए बिना इसे पूरा कर सकते हैं।

क्या फ्रेमवर्क का उपयोग करने का कोई फायदा है, क्योंकि यह पहले से ही ब्राउज़र की मेमोरी में लोड हो चुका है, इसमें डोम आदि का आसानी से सुलभ मानचित्र है? या सादे-वेनिला जेएस हमेशा तेज हो जाएंगे क्योंकि यह "कच्चा" है और ढांचे पर निर्भर नहीं है?

या क्या यह केवल स्वाद का विषय है?

उत्तर

1

jQuery की मेरी समझ से यह वास्तव में मेमोरी में डोम का नक्शा बनाए रखता है और केवल डोम चलने के लिए क्रॉस ब्राउज़र विधियां भी रखता है। कुछ ब्राउज़र पर कुछ ब्राउज़रों में कुछ तेजी से तेजी से बढ़ेगा (जैसे कि फ़ायरफ़ॉक्स में क्लास आधारित चयनकर्ता आईई की तुलना में तेज़ होगा क्योंकि IE के पास GetElementsByClassName और फ़ायरफ़ॉक्स के लिए फ़ंक्शन में अंतर्निहित नहीं है)। यदि आपको चीजों को करने के लिए ढांचे के तरीकों की आवश्यकता नहीं है तो मैं कहूंगा कि आगे बढ़ें और मूल जेएस का उपयोग करें क्योंकि आमतौर पर आपके द्वारा चुने गए ढांचे का उपयोग किया जाएगा।

7

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

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

+0

सच। जावास्क्रिप्ट के साथ भारी भारी सामग्री में डोम के साथ गड़बड़ करना शामिल है। मैं पिछले कुछ दिनों में jQuery चयनकर्ताओं को बेंचमार्क कर रहा हूं और यहां तक ​​कि जटिल चयनकर्ता माइक्रोसेकंड लेते हैं। मानक कोडों में अपने कोड को अनुकूलित करने के लिए यह बहुत महत्वपूर्ण है, उदा। वैरिला जेएस के साथ, लूप आदि के अंदर चयनकर्ताओं को नहीं डालकर चर का पुन: उपयोग करना। ढांचे का वास्तविक प्रदर्शन हिट लापरवाही है। – bcoughlan

0

मैं जावास्क्रिप्ट-भारी परियोजना पर काम कर रहा हूं। मैंने पाया है कि लगभग हर बार मैं अपने कोड में एक क्रॉस-ब्राउज़र बग था, यह एक ही स्थान पर था, जहां मैं इस तरह कोड था:

var element = $(selector); 
// lots of code ... 
element[0].someVanillaOperation(); 

और कहा कि वेनिला वास्तव में सभी ब्राउज़र में एक ही नहीं था । मुझे jQuery के बारे में क्या पसंद है कि (अधिकांश समय) यह ब्राउज़र के अंतर को छुपाता है और इसके कार्य सभी में समान कार्य करते हैं।

+0

ध्यान दें कि मैं केवल शुद्ध जावास्क्रिप्ट कीड़े का जिक्र कर रहा हूं; एचटीएमएल/सीएसएस प्रतिपादन मुद्दे दायरे में नहीं हैं। – configurator

1

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

अन्य कारक के लिए यह वास्तव में निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं।

0

यदि आप आईडी द्वारा तत्वों का चयन कर रहे हैं तो सादा जावास्क्रिप्ट तेज़ है। हालांकि, यह किसी भी चयन niceties प्रदान नहीं करता है जो आप jQuery के साथ प्राप्त करते हैं - उदाहरण के लिए, एक कॉल में कक्षा द्वारा एकाधिक तत्वों का चयन करना।

इस लिंक पर एक नज़र डालें: http://www.webkit.org/perf/slickspeed/ जो एक स्पीड टेस्ट चलाता है। यह jQuery का पुराना संस्करण है, लेकिन कच्चे गति के मामले में परिणाम खुद के लिए बोलते हैं।

व्यक्तिगत रूप से, मैं सब कुछ के लिए jQuery का उपयोग करते हैं - यह कोड क्लीनर रहता है और तथ्य यह है कि यह बहुत ज्यादा पार ब्राउज़र जे एस समर्थन मुद्दों के साथ वितरित मेरी किताब में किसी भी प्रदर्शन भूमि के ऊपर के लायक है।

+0

विडंबना यह है कि उस लिंक पर परीक्षण जावास्क्रिप्ट त्रुटि के साथ विफल होने पर मैंने कोशिश की (क्रोम)। –

+0

@jamietre: lol! वास्तव में? मैं 10.0.648.204 निर्माण पर हूं और वे मेरे लिए ठीक हैं। वे मूल रूप से कह रहे हैं कि ये सभी परीक्षण तेजी से प्रदर्शन करते हैं। – Town

+0

फ़ायरफ़ॉक्स में काम किया। कुछ प्रकार के फ्रेम मुद्दे। 'ढांचे [iframe.name] = {' test ': window.frames [iframe.name] .test, ... '.." Uncaught TypeError: अपरिभाषित की संपत्ति' परीक्षण 'नहीं पढ़ सकता है। जाहिर है, उन्हें परीक्षण स्थापित करने के लिए देशी जेएस का उपयोग नहीं करना चाहिए था। :) –

3

वहाँ हमेशा जानने के लिए जब आप शुद्ध जे एस के साथ समस्याओं को सुलझाने रहे हैं के रूप में बाहरी कोड पड़ता था यह तुम्हारे लिए क्या कुछ है। लंबे समय तक, यह अधिक रखरखाव योग्य है क्योंकि यह है कोड। यह बदलने वाला नहीं है। आप जानते हैं कि यह क्या करता है। यही वह जगह है जहां आपकी अपनी समस्याओं को हल करने का मूल्य वास्तव में खेल में आता है। यदि आप MDC, MSDN, और ECMAScript spec पर अपना शोध करते हैं, तो क्रॉस-ब्राउज़र स्क्रिप्टिंग प्रक्रिया के लिए बहुत आसान हो जाती है। निश्चित रूप से, माइक्रोसॉफ्ट के अपने विचार और उनके स्वयं के डोम हैं, लेकिन वह जगह है जहां मजेदार (पढ़ना: चुनौती) है। शुद्ध जे एस में

क्रॉस-ब्राउज़र पटकथा वास्तव में भाषा की अपनी समझ के साथ अपनी समस्या को सुलझाने की क्षमता heightens। यदि अभी भी ऐसी चीजें हैं जो आपको परेशान करती हैं, तो jQuery मिश्रण में आ सकता है और मानसिक अंतर को पुल कर सकता है, इसलिए बोलने के लिए। एक लक्जरी वाहन में चारों ओर ड्राइव करना बहुत अच्छा है, लेकिन अगर आप नहीं जानते कि टायर बदलने के तरीके को कैसे फ्लैट किया जाए तो इसका क्या उपयोग होता है? सबसे अच्छा jQuery devs वे हैं जो जावास्क्रिप्ट को अच्छी तरह से जानते हैं और जानते हैं कि jQuery का उपयोग कब करें, और सादे जेएस का उपयोग कब करें।

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

यह पूरी तरह से एक विलक्षण कार्य को पूरा करने के कई अलग अलग उपकरणों का उपयोग करने के लिए स्वीकार्य है। आपको बस यह जानने की जरूरत है कि उन्हें कब और कहाँ उपयोग किया जाए।

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

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