2010-08-13 13 views
5

मैं रहता हूं और jQuery को सांस लेता हूं, लेकिन मुझे एक उत्कृष्ट प्लगइन भी पसंद है जो मैं पूरी तरह से काम करना चाहता हूं।* म्यूटूल कोड के अंदर jQuery * कितना बुरा है?

मेरे रेल एप्लिकेशन jQuery में कोडित है, लेकिन फाइल अपलोड करने के लिए, मैंने अभी तक कुछ FancyUpload (बेहतर Uploadify या SWFUpload से IMHO) की तुलना में बेहतर लगता है है। सभी तीन पुस्तकालयों की कोशिश करने के बाद, FancyUpload मेरे ऐप में एकीकृत करने के लिए सबसे अच्छा है।

हालांकि, फैंसीउप्लोड म्यूटूल पर आधारित है, और दोनों पुस्तकालयों को लोड करना (अकेले उनके साथ काम करना) सिरदर्द का थोड़ा सा होना शुरू हो रहा है। सबसे पहले, मैं केवल उन पृष्ठों पर MooTools लोड करता हूं जो अपलोड कार्यक्षमता का उपयोग करते हैं; अन्य सभी पेज विशेष रूप से jQuery का उपयोग करते हैं। दूसरा, मुझे manually namespace many of my jQuery functions करना पड़ा, जो थोड़ा परेशान है।

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

onFileSuccess: function(file, response) { 
    var json = new Hash(JSON.decode(response, true) || {}); 

    if (json.get('status') == '1') { 

     // success 
     file.element.addClass('file-success'); 
     (function ($, elem, queue_item) { 
      $('#images').append($(elem).hide().fadeIn('slow')); 
      $(queue_item).fadeOut('slow', function() { $(this).remove(); }); 
     })(jQuery, json.get('data'), file.element); 

    } else { 

     // failure 
     file.element.addClass('file-failed'); 

    } 
} 

आप ध्यान देंगे के रूप में, मैं सही एक MooTools समारोह के बीच में एक jQuery समारोह है:

विशेष रूप से, यहां FancyUpload के लिए मेरे onFileSuccess कार्य है।

मेरा प्रश्न यह है: क्या यह वास्तव में एक बुरी चीज है? मेरा काम ठीक उसी तरह काम करता है जैसा मैं चाहता हूं, लेकिन मुझे नहीं पता कि मैं ऐसा करके कुछ भविष्य आपदाओं की ओर स्नोबॉलिंग कर रहा हूं या नहीं।

यदि यह वास्तव में एक बुरा विचार है, तो क्या कोई मुझे एक पॉइंटर दे सकता है कि म्यूटूल-समकक्ष कोड क्या होगा?

मैं किसी भी अंतर्दृष्टि या सहायता की सराहना करता हूं।

+0

मुझे लगता है कि यह कोई समस्या नहीं होनी चाहिए।मैं एक क्रॉस-ब्राउज़र परीक्षण करता हूं, और ढांचे के नए संस्करणों में अपग्रेड करते समय सावधानी बरतता हूं। – Marko

+0

mootools बराबर '$ (" छवियों ") की तरह कुछ (, {अवधि: 1000} $ (json.get (" डाटा ")) नहीं हो पाती (0,1।)) होगा अपनाने। $ (file.element) .Set ("ट्वीन", { onComplete: function() { this.element.dispose();} }) ("बाहर") नहीं हो पाती, ' - हालांकि यह मुश्किल है। यह बताने के लिए कि कौन सा चर एक तत्व के लिए एक सूचक है और कौन सा नहीं है - mootools को वस्तुओं के माध्यम से जाने की आवश्यकता नहीं है। –

उत्तर

0

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

onFileSuccess: function(file, response) { 
    var json = new Hash(JSON.decode(response, true) || {}); 

    if (json.get('status') == '1') { 
     // success 
     file.element.addClass('file-success'); 
     document.id('images').adopt(document.id(json.get('data')).fade('hide').fade('in')); 
     document.id(file.element).set('tween', { 
      onComplete: function() { this.element.dispose();} 
     }).fade('out'); 
    } else { 
     // failure 
     file.element.addClass('file-failed'); 
    } 
} 

संपादित करें:

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

+1

निष्पक्ष टिप्पणी लेकिन मैं mootools कोड के लिए बंद ग्रहण किया और mootools पहले से लोड होने की (जो mootools में के रूप में इसके बारे में जाने के लिए गलत तरीके से noConflict document.id के लिए स्वत: है) - लेकिन मुझे नहीं लगता है कि हेराल्ड के सामान document.id का उपयोग करता है ताकि आप अपने कोड के चारों ओर एक बंद का उपयोग करें या इसे संपादित –

4

मुझे लगता है कि दोनों jq और mootools के लिए आरक्षित '$' वर्ण का उपयोग करना कभी अच्छी बात नहीं है, क्योंकि इसे आसानी से नेमस्पेसिंग का उपयोग करके टाला जा सकता है। जब एक अच्छे तरह से एक चर निर्दिष्ट करने के लिए बस है

jQuery.noConflict(); 

: मैं आप की तरह कुछ का उपयोग कर रहे हैं नेमस्पेसिंग संभालने हूँ

var jQ = jQuery.noConflict(); 

अब आप jQ कॉल कर सकते हैं ('चयनकर्ता यहां') jq और mootools के लिए $ के लिए। मुझे अपना कोड सीधे रखने में मदद करता है और इसे और भी पठनीय बनाता है। आप बस अपना ऑर्डर भी बदल सकते हैं, जो नेमस्पेसिंग समस्या को भी ठीक कर सकता है।

+0

टिप के लिए धन्यवाद करने के लिए की जरूरत है; मुझे यह विचार बहुत बेहतर लगता है क्योंकि मैं देख सकता हूं कि यह मेरे कोड क्लीनर को कैसे बनाए रखेगा! – neezer

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