2009-05-26 8 views
6

स्कैथिंग के बारे में राय मांगने के लिए मैं jQuery के बारे में उलझन में हूं।jQuery आलोचना

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

दूसरी ओर, मुझे हाल ही में comp.lang.javascript में this पोस्ट की दिशा में इंगित किया गया था जिसमें लेखक jQuery (और जाहिर है, कई अन्य समान पुस्तकालयों) के बारे में कहने के लिए बहुत कम दयालु शब्द हैं, और है दयालु/बहादुर his own library प्रदान करने के लिए पर्याप्त है।

jQuery की वर्तमान स्थिति और अन्य ऐसे जेएस पुस्तकालयों पर आपका क्या लेना है?

+3

वह कौन है? मैं यह नहीं कह रहा कि वह सही है या गलत है (मुझे नहीं पता, पिछले कई सालों से मैं वेब प्रोग्रामिंग से बचने के लिए भाग्यशाली रहा हूं), लेकिन उसके प्रमाण पत्र क्या हैं? क्या उसने जेएस के साथ कुछ भी उल्लेखनीय किया है? इसके अलावा, यह संभव है कि jquery का कार्यान्वयन उतना ही बेकार हो जितना वह कहता है, और फिर भी लाइब्रेरी * पर्याप्त है * और सबसे अच्छा है। यदि कंप्यूटिंग का इतिहास कुछ भी जाना है, तो सबसे खराब तकनीकें हमेशा वैसे भी जीत जाएंगी। – jalf

+0

हा, नकारात्मकता :) मुझे दृढ़ता से विश्वास है कि मैं jQuery की तुलना में बेहतर पुस्तकालय लिख सकता हूं, लेकिन मैं दृढ़ता से विश्वास करता हूं कि यह अप्रासंगिक है क्योंकि जो मायने रखता है वह मानक है, और मैं आगे मानता हूं कि जो भी "वह लड़का" है, अगर वह वह स्मार्ट था पता है कि यह सच था। – annakata

उत्तर

3

ठीक है, मेरी राय में jQuery एक बहुत अच्छी तरह से सोचा पुस्तकालय है, जिसमें बहुत कम नामस्थान टकराव हैं और आम तौर पर एक भाषा के रूप में जावास्क्रिप्ट की भावना के भीतर है।

18

मैं नहीं एक जे एस डेवलपर हूँ, लेकिन इस तरह रखा:

किसी व्यक्ति के द्वारा व्यापक रूप से इस्तेमाल पुस्तकालय की आलोचना और एक ही समय अपने स्वयं के पुस्तकालय को बढ़ावा देने के है?

मुझे सनकी कहो, लेकिन ब्याज के अंतर्निहित संघर्ष को देखते हुए मैं एक निश्चित राय के रूप में अपना शब्द लेने से पहले एक और राय या 2 की तलाश करता हूं।

+2

* विशेष रूप से * जब राय कहा जाता है तो कोडिंग शैली क्विब्ल्स का एक गुच्छा है "इतनी बेवकूफ बेवकूफ है कि कभी बेवकूफ" टाइप स्टेटमेंट्स के साथ छेड़छाड़ की जाती है। – ceejayoz

+2

* विशेष रूप से * जब धागा तेजी से "अंग्रेजी बोलना सीखता है" और अन्य अपमान – annakata

1

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

+0

ठीक है, मैं काफी अच्छी तरह से "जाने के लिए" हूं। jQuery हमें बहुत अच्छी तरह से सेवा देता है, लेकिन हमने कॉन्करर के साथ मुद्दों में भाग लिया है जो मुझे चीजों के सुंदर गिरावट पक्ष के बारे में चिंता करते हैं। – spender

+1

/स्मैक, 'प्रगतिशील वृद्धि' – garrow

+1

हां। Konqueror एक समर्थित ब्राउज़र नहीं है, और मैंने देखा है कि jQuery उस ब्राउज़र में विफल रहता है। यह वास्तव में jQuery के बारे में सोचने के लिए कुछ है - क्या आप समर्थित ब्राउज़र की सूची के साथ रह सकते हैं? मैंने विभिन्न मोबाइल ब्राउज़रों के साथ भी परेशानी देखी है। आईआईआरसी, क्लिक डाउन इवेंट आईफोन पर मोबाइल सफारी में क्लिक अप (जब दोनों को निकाल दिया जाता है) तक नहीं होता है। यह मोबाइल सफारी की "गलती" हो सकती है, लेकिन jQuery किसी भी समर्थित ब्राउज़र के बाद सफाई नहीं कर रहा है। मुझे आईफोन पर एक मामले में घटनाओं पर क्लिक करने के बजाय टच इवेंट्स का उपयोग करना होगा। – Nosredna

13

मेरे $ .02:

jQuery पुस्तकालय युद्ध जीत लिया है। इसमें बस है: एमवीसी में शामिल करना इसे सील करता है।

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

मेरे पास ओपन सोर्स लाइब्रेरी की गुणवत्ता के बारे में शिकायत करने वाले किसी भी व्यक्ति के लिए अधिक समय नहीं है - इसे पसंद नहीं है? शामिल हो जाओ और इसे ठीक करें।

जहां मुझे jQuery के साथ कोई समस्या है, वह है waaaayay मेरी पसंद के लिए बहुत से डेवलपर जावास्क्रिप्ट को गहराई से सीखना नहीं चाहते हैं। मुझे लगता है कि यह उन लोगों के लिए एक समान तर्क है जो जोर देते हैं कि सभी को सी ++ सीखना चाहिए, और शायद मैं उस तर्क के बिंदु को देखना शुरू कर दूंगा। जावास्क्रिप्ट अपने आप से एक विशाल शक्तिशाली भाषा है, जो कई वर्षों से बहु-के पुस्तकालय को जोड़ने के बिना समस्याओं को हल करने में सक्षम है। मेरे अनुभव में एक निश्चित jQuery प्रभाव है (हॉलमार्क: "क्यों नहीं, jQuery का उपयोग क्यों करें?") एक अखरोट को तोड़ने के लिए एक स्लेजहैमर का आह्वान करने के लिए।

+2

'एमवीसी' सिर्फ एक अवधारणा है जिसमें jquery शामिल नहीं है। आपको लगता है कि आप 'एएसपी.NET एमवीसी' का जिक्र कर रहे हैं। कृपया उन्हें मिश्रण न करें। – alamar

+11

@alamar - वह उन्हें मिश्रण नहीं कर रहा है। इस धागे का संदर्भ स्पष्ट रूप से निर्देश देता है कि वह माइक्रोसॉफ्ट के एमवीसी के अवतार का जिक्र कर रहा है। व्यर्थ टिप्पणी। – alex

+3

हां, मुझे इसके बारे में अच्छी तरह से पता है, यह सिर्फ ओपी को दिया गया है - बहुत सचमुच होने की आवश्यकता नहीं – annakata

8

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

चलिए इस वैकल्पिक जावास्क्रिप्ट लाइब्रेरी को देखें। प्रारंभिक पृष्ठ कहता है, साहित्यिक, "मुझे पुस्तकालयों से नफरत है, इसलिए मैंने एक पुस्तकालय बनाया है।"इसके अलावा यह ब्राउजर स्नीफिंग के बारे में बताता है, और दावा करता है कि केवल फीचर स्नीफिंग करने के लिए ही दावा किया जाता है। मैट, इस तरह वास्तव में उनमें से बहुत से ब्राउज़र स्नीफिंग करते हैं। यह कहता है कि एपीआई में उलझन में बेवकूफ हैं, और वर्तमान में इसकी, उम, एपीआई। हाँ, यह थोड़ा मूर्खतापूर्ण है, लेकिन मुझे यकीन है कि यह सब एक अच्छे कारण के लिए है?

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

यह एक शुद्ध पुस्तकालय हो सकता है, लेकिन दुर्भाग्यवश असली दुनिया मुझे कुलीन बादल से बाहर कर रही है। मैं पूरी चीज को एक चुटकी नमक के साथ ले जाऊंगा (उसने किस संस्करण का परीक्षण किया था? क्या वह डेवलपर से पहले पूछता था कि कुछ चीजें किस तरह से थीं?), और मुझे some wise words याद है (पास " दो पेज लंबे ") स्टैक ओवरफ्लो फायरस्टार्टर जोएल स्पॉल्स्की के अलावा किसी भी अन्य द्वारा, वास्तव में पागल या घुसपैठ कोड के उन सभी छोटे टुकड़े वास्तव में ब्राउज़र, प्लेटफ़ॉर्म, ओएस, कंपाइलर, संस्करण, कोड इत्यादि के बारे में आपके ज्ञान को प्राप्त नहीं कर चुके हैं। एक शुद्धवादियों की तरह क्या हो सकता है सबसे बुरा सपना वास्तव में, बस काम कोड हो सकता है।

ओह, और अपनी प्रारंभिक पोस्ट में टिप्पणियों के माध्यम से पढ़ते हुए पता चलता है कि वह एक घमंडी छेड़छाड़ करता है जो बताता है कि कोई भी उससे सहमत नहीं है कि वे बेकार हैं, कुछ भी नहीं जानते, अक्षम और पूरी तरह से अधिक नब्बे हैं। उत्तम दर्जे का।

वैसे भी, किसी और के उपयोग के बजाय अपने स्वयं के टॉपिक मैप्स इंजन को हैक करने के लिए वापस। :)

+0

मुझे समझ में नहीं आता कि आप डेविड मार्क की MyLibrary के साथ कौन से प्लग-इन बनाना चाहते हैं। मुझे लगता है कि आप इस पुस्तकालय की तुलना JQuery के $ ऑब्जेक्ट और फ़ंक्शन चेनिंग के साथ कर रहे हैं, और नए कार्यों को जोड़ने की क्षमता जो $ ऑब्जेक्ट द्वारा तर्क के रूप में संचालित तत्वों के वर्तमान सेट को ले सकते हैं। MyLibrary में "ऑब्जेक्ट रैपर" है। इसके अलावा, API.areFeatures आपको यह जांचने की अनुमति देता है कि "प्लग-इन" क्या इंस्टॉल हैं। – user429921

3

comp.lang.javascript कट्टर zealots से भरा है।

यह सब बुरा नहीं है। मुझे लगता है कि सभी स्निपिंग के परिणामस्वरूप पुस्तकालय बेहतर हो गए हैं। उदाहरण के लिए, यह jQuery 1.3 रिलीज नोट्स से है: "कोई और ब्राउज़र स्नीफिंग नहीं। इस रिलीज की अंतिम प्रमुख विशेषता यह है कि आप शायद कभी नहीं देख पाएंगे या सीधे सौदे नहीं करेंगे लेकिन यह एक महत्वपूर्ण बदलाव है जो बनाने में मदद करेगा jQuery लंबे समय तक और कम बग के साथ: 1.3 के रूप में, jQuery अब ब्राउज़र/उपयोगकर्ता के किसी भी रूप का उपयोग नहीं करता है आंतरिक रूप से स्नीफिंग - और ऐसा करने के लिए पहली बड़ी जावास्क्रिप्ट लाइब्रेरी है। "

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

1

यह चर्चा थोड़ी देर पहले दौर बना रही थी और क्लज पर लोगों के पास मजबूत राय थी।

इनमें से अधिकतर आलोचनाएं jQuery द्वारा किए गए दृष्टिकोणों के बारे में हैं लेकिन जैसा कि यह पता चला है कि वे ऐसा क्यों करते हैं जो jQuery करता है। उदाहरण के लिए मैट क्रूस उसकी blog पर काफी जिसे उपयुक्त फिर से सूची पर प्रतिक्रिया व्यक्त

> Five seconds in, this line sticks out like a sore thumb: 
> if (typeof text !== "object" && text != null) 

I mentioned this line in a recent thread on a jquery group... 

> The first comparison does not need to be strict. 

The argument is that in some browsers, making it strict is actually 
faster, and doesn't hurt anything. Supposing this is true, then it 
makes sense to leave it as-is. 

> The second comparison is obviously a waste of time. 

Not true. The intent is to also catch cases where text is undefined, 
and would then ==null. 

और उसके बाद:

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

यूयूआई मजबूत है, अगर वर्बोज़ नहीं है।इसमें कुछ बहुत ही स्मार्ट लोग हैं, लेकिन को jQuery पर पकड़ने की प्रतीत नहीं हुई है। जब मैंने इसे देखा, तो मुझे "भारी" महसूस हुआ। और इसमें संदिग्ध कोडिंग प्रथाएं अच्छी तरह से हैं। प्रोटोटाइप एक जानवर है जिसमें लंबे समय से आसपास रहा है और नहीं है जिसे मैं अनुशंसा करता हूं। लेकिन में बहुत सारे ओओ समर्थन हैं, यदि जो आप ढूंढ रहे हैं। आईएमओ, जावास्क्रिप्ट ओओ नहीं है, इसलिए मैंने कभी भी को मजबूर करने की कोशिश करने की कोशिश नहीं की है। ExtJS बहुत चिकना और फैंसी है, लेकिन यह विशाल ब्लोट है। मुझे नहीं पता कि कोड जैसा दिखता है। मुझे पता है कि यह पर जा रहा है jQuery का उपयोग करने के लिए पोर्ट किया जा सकता है, लेकिन मैं नहीं जानता कि क्या हुआ। MooTools हैकर की लाइब्रेरी है, और आईएमओ यह सिर्फ कुछ भी प्रदान नहीं करता है जो jQuery नहीं करता है। दोजो मर चुका है, AFAIK। मैंने कभी भी पसंद नहीं किया।

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

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