2012-05-11 5 views
5

संपादित करें: बस स्पष्ट होने के लिए, मैं jQuery की उत्कृष्टता पर सवाल नहीं उठा रहा हूं। मैं इसे हर जगह इस्तेमाल करता हूं। मैं नियमित जेएस ऑब्जेक्ट्स पर विजेट्स का उपयोग करने के फायदे नहीं समझता जो jQuery की कार्यक्षमता का लाभ उठाते हैं।नियमित जेएस ऑब्जेक्ट पर jQuery विजेट के लाभ?

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

मुझे गलत मत समझो, मैं लगातार jQuery का उपयोग करता हूं और मैं इसके बिना जीवन से नफरत करता हूं, बस विजेट सम्मेलन में मूल्य नहीं देखता। मुझे यकीन है कि मैं इस बिंदु को याद कर रहा हूं क्योंकि वे इतने व्यापक हैं, इसलिए कृपया मुझे सुराग दें। नियमित जेएस ऑब्जेक्ट्स के बजाय लोग jQuery विजेट क्यों बनाते हैं?

oversimplified उदाहरण:

नियमित जावास्क्रिप्ट वस्तु:

//instantiate & render 
var foo = new MyDomain.MyObject('#mySpecialInput', options) 
foo.render(); 

//assign to property 
foo.value = 5; 
//call method 
foo.multiplyBy(2); 
//bind event 
foo.change(function(){ 
    alert('it changed'); 
} 

Jquery विजेट:

//instantiate & render 
var $foo = $('#mySpecialInput'); 
$foo.myWidget(options); 

//assign to property 
$foo.myWidget('option', 'value', 5); 
//call method 
$foo.myWidget('multiplyBy', 2); 
//bind event 
$foo.bind('myWidgetChange', function(){ 
    alert('it changed'); 
} 
+7

एक कारण हो सकता है [jQuery अद्भुत है और बहुत सी बातें करता है:)] (http://img180.imageshack.us/img180/3305/addanumbertoanothernumb.png) – naveen

+1

यह @naveen देखने के लिए शुरुआत है वास्तविक उत्तर की तरह :) –

+1

मैं jQuery UI विजेट फैक्टरी का उपयोग करता हूं (मुझे लगता है कि आप जो भी संदर्भ दे रहे हैं) प्लगइन लिखने के लिए हर समय। मुझे नहीं लगता कि मैं कभी भी हर वस्तु के लिए उनका उपयोग करता हूं। फैक्ट्री सार्वजनिक तरीकों को बहुत आसानी से कॉल करने की अनुमति देती है ('$ foo.data ('myWidget')। गुणा करें (2);')। –

उत्तर

1

सबसे बड़ी बात यह है कि jQuery विगेट्स मदद अपने अनुप्रयोग है कि हो सकता है संरचना लाने है उनके बिना बनाए रखने के लिए बहुत मुश्किल है। बेशक, वे .bind() जैसे कुछ उपयोगी कार्यक्रम भी प्रदान करते हैं, जो कभी-कभी बहुत उपयोगी हो सकते हैं। कुछ गुगलिंग के बाद, मुझे jQuery विजेट्स पर this article मिला जो उनके फायदों पर थोड़ी अधिक जानकारी में जाता है।

व्यक्तिगत रूप से, मैं मैन्युअल रूप से अपनी स्क्रिप्ट (अधिक) संरचना करना पसंद करता हूं, लेकिन यदि आपको ऐसा करने में ऐसा नहीं लगता है, तो jQuery विजेट्स मदद कर सकते हैं।


प्रासंगिक उद्धरण का ब्यौरा कैसे jQuery विगेट्स संरचना जोड़ें:

... यह कोड संगठन के स्तर है कि बहुत के लिए कठिन है एक विजेट संरचना के बाहर बनाए रखने प्रदान करता है। यह से अनिवार्य होने के कोड को बदलता है ("ऐसा करें, फिर वह एक और बात, पर क्लिक करें") घोषणात्मक ("एक विस्तारित चीज़ की तरह कार्य करें") पर। इससे आपको को "विस्तारित चीज़" का अर्थ परिभाषित करने के लिए स्वतंत्र किया जाता है, जबकि अव्यवस्था या आपके ऐप की बाहरी परत को बदलना नहीं है। कोई और बहु ​​सौ लाइन लंबा $ (दस्तावेज़) .ready() ब्लॉक।

+1

यह तर्क है कि मैं चारों ओर फेंक रहा हूं, लेकिन jQuery विजेट नियमित जावास्क्रिप्ट ऑब्जेक्ट की तुलना में रखरखाव की अधिक संरचना/आसानी कैसे लाता है? आपके द्वारा लिंक किया गया लेख ऐसा लगता है कि यह धारणा बनाता है कि विगेट्स से पहले, हम सभी वैश्विक कार्यों और गैर-ओओ कोड का उपयोग कर रहे थे? मैं संरचना की आवश्यकता को समझता हूं, लेकिन असामान्य वाक्यविन्यास क्यों? स्ट्रिंग के रूप में संपत्ति के नाम और विधियों को क्यों पास करें? विरासत का पुन: आविष्कार क्यों किया? क्यों न सिर्फ जावास्क्रिप्ट सम्मेलनों का उपयोग करें? –

+0

यह एक लंबी व्याख्या है इसलिए मैं आपको यह जानने के लिए लेख पढ़ने की सलाह दूंगा। मैं देखूंगा कि मुझे औसत समय में प्रासंगिक उद्धरण मिल सकता है या नहीं। –

+0

आपके द्वारा लिंक किया गया आलेख ऐसा लगता है कि यह धारणा बनाता है कि विगेट्स से पहले, हम सभी वैश्विक कार्यों और गैर-ओओ कोड का उपयोग कर रहे थे? मैं संरचना की आवश्यकता को समझता हूं, लेकिन असामान्य वाक्यविन्यास क्यों? स्ट्रिंग के रूप में संपत्ति के नाम और विधियों को क्यों पास करें? विरासत का पुन: आविष्कार क्यों किया? क्यों न सिर्फ जावास्क्रिप्ट सम्मेलनों का उपयोग करें? –

0
  1. कोड संगठन और संरचना बनाने
  2. नेमस्पेसिंग
  3. विरासत
  4. उचित scoping और आम
  5. आइटम के लिए उपयोग के लिए बंद
  6. पार डेवलपर पठनीयता और आम वास्तुकला
  7. पूर्व निर्धारित गुण
+0

मैं तर्क दूंगा कि नियमित जेएस ऑब्जेक्ट्स की तुलना में ये सभी jQuery विजेट्स का उपयोग करके अधिक कठिन/अनजान हैं। शायद आप मुझे एक उदाहरण या दो दे सकते हैं? –

+0

मुझे एहसास है कि आप ईमानदार उत्तर पाने के बजाए अपने उत्तर की पुष्टि करने के लिए किसी की तलाश कर रहे हैं, लेकिन मैं digress।1 और 5) यदि आपके घर में घुमावदार वस्तु है, तो आप एक निश्चित संरचना को निहित कर रहे हैं, जो आपके आवेदन के लिए अनुकूल है लेकिन अन्य आसानी से कूद नहीं सकते हैं। 3) जेएस एक पटकथा भाषा है, कड़ाई से ओओ नहीं। ऐसे में, कोई वास्तविक विरासत नहीं है। 4) मेरे पास ऐसे उदाहरण हैं जहां मैं एक फ़ंक्शन लिखता हूं जो सोचता है कि यह एक jquery dom ऑब्जेक्ट के लिए अच्छा है, लेकिन यह गलत को लक्षित करता है। 6) आप ऑब्जेक्ट को एक कस्टम डेटा रैपर में स्टोर कर सकते हैं, लेकिन डिफ़ॉल्ट विजेट्स डेटा में स्टोर करते हैं। –

+0

ओह, और कोड को आमंत्रित करने के लिए दो अलग-अलग सम्मेलनों के बजाय, jQuery के सम्मेलनों को विजेट के साथ रखना आसान है। यदि यह वास्तव में आपको बहुत परेशान करता है, तो मैं डोजो को देखने का सुझाव देता हूं, जिसमें आपको सिंटैक्स पसंद है (हालांकि मुझे यह काम करने के लिए एक जानवर मिल गया है।) –

1

साइट 'बिंदु सोच को जोड़ने के लिए, jQuery विजेट का उपयोग भी अन्य OO

(बुनियादी ढांचे सादा js में समर्थन करने के लिए आवश्यक निर्माण में निवेश के बिना) सुविधाओं की तरह प्रदान करता है - तानाना
- जगह विरासत में - से ही विस्तार की अनुमति देता है । यह मॉड्यूलर और अत्यधिक रखरखाव कोड
- कोड की पठनीयता में सुधार के लिए सार्वजनिक और निजी तरीकों की अवधारणा की अनुमति देता है, और सबसे अच्छा हिस्सा यह है कि यह jQuery ऑब्जेक्ट
लौटने के बाद से चेनिंग बनाए रखता है - विजेट के प्रबंधन के लिए बहुत से पूर्वनिर्धारित विधियां हैं जीवन चक्र: निर्माण, प्रारंभ, और विनाश

jQuery विजेट ढांचे कार्यक्षमता की तरह OO नकल करने के लिए एक उपकरण के रूप में इलाज किया जा सकता है।

यह एक सुसंगत एपीआई के साथ जटिल, स्टेटफुल प्लगइन्स के निर्माण के लिए एक लचीला आधार प्रदान करता है। यह करने वाले प्लग इन jQuery यूआई के हिस्सा हैं, के लिए लेकिन डेवलपर्स जो आम बुनियादी ढांचे पुनर्रचना के बिना वस्तु उन्मुख घटकों का निर्माण करना चाहते द्वारा सामान्य उपभोग के लिए न केवल बनाया गया है। - http://wiki.jqueryui.com/w/page/12138135/Widget%20factory

+1

I अच्छी तरह से विचार-विमर्श के जवाब की सराहना करते हैं, लेकिन इस प्रश्न से पूछने के लगभग एक साल बाद, मैंने विजेट सिंटैक्स की मूर्खता के बारे में और अधिक दृढ़ता से महसूस किया, जैसा कि मैंने पहले किया था। हर जगह जादू तारों का उपयोग करना सिर्फ बुरा है। अन्य ओओ ढांचे हैं अब वहां, अजीब सिंटैक्स के साथ एक का उपयोग करने का कोई कारण नहीं है जो इंटेल की अनुमति नहीं देता है lisense। –

+1

हां, आपके बिंदु पर विगेट्स के पास साधारण चीज़ों के लिए अजीब सिंटैक्स होता है जैसे कि एक उदाहरण पर सार्वजनिक विधि को कॉल करना: '$ (# selector) .widgetName()। WidgetName (" publicMethodName ");' – airboss