2011-03-17 8 views
5
लंबे समय मैं इस तरह के अंदर अपने सभी कोड लिख रहा था के लिए

...क्या यह jQuery में कोड व्यवस्थित करने का एक स्मार्ट तरीका है?

$(document).ready(function(){ 
    $('.show_module').click(function(){ 

    }); 
    ... 

}); 

वहाँ में क्लिक संचालकों के सभी प्रकार डाल। लेकिन हाल ही में मुझे चीजों को करने के एक नए तरीके से पेश किया गया था और मैं इसके बारे में महसूस करना चाहता था कि इसके बारे में जाने का एक स्मार्ट तरीका है या नहीं।

विचार सभी हैंडलर संबंधित कार्यों में है और फिर दस्तावेज़ में न्यूनतम कोड है। पहले से ऊपर।

इसलिए उदाहरण के लिए ...

$(document).ready(function(){ 
    page_handler(); // other functions follow 
}); 

function page_handler(){ 
    $('.show_module').click(function(){ 

    }); 
    ... 
} 

यह कार्यों में संबंधित संचालकों के संगठन की अनुमति है और document.ready एक प्रारंभकर्ता के अधिक के रूप में उपयोग करने के लिए लगता है।

मैं जावास्क्रिप्ट कार्यों और चर में पता है, 'फहराया' कर रहे हैं इससे पहले कि कोड इस कारण के लिए इतना

do_something(); 
function do_something(){ 

} 

काम करता है को क्रियान्वित करने शुरू होता है, के बाद से समारोह do_something() वास्तव में कहा जाता है से पहले का उपयोग करने के लिए तैयार है यहां तक ​​कि इसे हालांकि वास्तविक कार्य परिभाषा से पहले प्रकट होता है।

मैं सोच रहा था कि वही बात यहां होती है और चीजों को करने का यह विचार/तरीका कितना अच्छा है।

$(document).ready(function() { ... }); 

कौन सा मैं शॉर्ट हाथ में लिखते थे:

उत्तर

5

इससे आपके सभी हैंडलरों को वैश्विक (window) दायरे में उजागर किया जाएगा, जिससे संघर्ष हो सकता है।

मैं यह करने के पसंद करते हैं ...

(function($) { 

// Anything you do in here won't be attached to window. 
var a; 

// If you must have something global, set it explicitly 
window.doSomething = function() { ... } 

// We can also use $ for jQuery here, even if we have used jQuery.noConflict() 
$('body')... 

})(jQuery); 
+0

क्यों (फ़ंक्शन ($) {}) (jquery) ;? और जब आप 'संघर्ष' कहते हैं ... क्या आप मुझे इसका मतलब बता सकते हैं? – concept47

+0

@ concept47 मेरा मतलब है कि यदि आपके पास कोई फ़ंक्शन 'हैंडलक्लिक() 'है और आपका सहयोगी भी बनाता है, तो आपको एक संघर्ष होगा। – alex

+0

ठीक है ... मुझे यह पसंद है कि आप इसके साथ कहां जा रहे हैं, लेकिन आप ऐसे मामले से कैसे निपटते हैं जहां आपके पास (फ़ंक्शन ($) {}) (jQuery) के अंदर हैंडलर का एक टन है; कहते हैं? ...आप उन्हें अपने कार्यों में कैसे विभाजित करेंगे ... इसके साथ अपना जवाब अपडेट करने के लिए स्वतंत्र महसूस करें। – concept47

0

मैं हमेशा कार्यों से पहले दस्तावेज़ तैयार कर दिया

$(function() { ... }); 

आदर्श रूप में यह बेहतर है ऊपर की तरह सिर्फ एक initialiser के लिए । This आपके लिए भी उपयोगी हो सकता है यदि आप jQuery संदर्भ में एक्सटेंशन/प्लगइन्स लिखना चाहते हैं।

+0

कोई विशेष कारण क्यों? कार्यों को पहले किसी भी तरह से फेंक दिया जाएगा और दस्तावेज़ को पहले तैयार करके, आपके कोड को देखने वाले किसी को वहां पता है। – concept47

2

यह पर निर्भर करता है:

आप कार्यों का पुन: उपयोग करना चाहते हैं? - यदि हां, तो आपकी संरचना इसे करने का एक अच्छा तरीका है

आपका कोड कितना समय है? - यदि आपका कोड बहुत लंबा नहीं है और कहीं और नहीं उपयोग करें। मुझे लगता है कि आपको इसे कार्यों में तोड़ने की जरूरत नहीं है।

+1

कभी-कभी, वास्तव में जटिल UI इंटरैक्शन के लिए, आप कई हैंडलर प्राप्त कर सकते हैं जो लंबे समय तक होते हैं, भले ही कुछ फ़ंक्शंस का पुन: उपयोग नहीं किया जाता है, यह कोड व्यवस्थित करने का एक आसान तरीका प्रतीत होता है – concept47

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

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