2011-01-18 13 views
5

मैं jQuery के लिए एक बहुत ही शुरुआत कर रहा हूँ, और मैं कुछ बुनियादी सवालों आ रही हैं:jQuery - कुछ शुरुआत सवाल

  1. यह सलाह दी जाती jQuery का उपयोग करने के जब भी यह यह का उपयोग करके कुछ को बदलने के लिए संभव है? उदाहरण के लिए, क्या यह एचटीएमएल के बजाय, सभी घटनाओं को तत्वों के साथ बाध्य करने के लिए समझदार है?

  2. क्या jQuery .js फ़ाइल और अन्य सभी प्रासंगिक फ़ाइलों (जैसे JQuery UI) को होस्ट करना बेहतर है, या शायद यह Google के लिंक का उपयोग करने के लिए बेहतर विकल्प है (वे इसे दूसरों के लिए भी होस्ट करते हैं)?

  3. जब पृष्ठ लोड होने पर स्क्रिप्ट निष्पादित करने की बात आती है, तो किस तरह से प्राथमिकता दी जाती है?

    1. $(document).ready(function() {})
    2. $(function() {})
    3. $().ready(function() {})

    वे सभी एक ही बात करने के लिए लगता है, लेकिन क्या पटकथा का पसंदीदा तरीका है?

उत्तर

3
  1. हां। इस प्रकार आपका जेएस साफ-अलग आपके एचटीएमएल से अलग हो गया है। आप अपनी फाइल को देख सकते हैं और एक नज़र में, देखें कि यह आपके एचटीएमएल को कैसे प्रभावित कर रहा है। यदि यह HTML में एम्बेड किया गया था, तो आपको ऑनक्लिक, ऑनलोड आदि देखना होगा और यह बड़े अनुप्रयोगों के लिए बहुत गन्दा हो सकता है।

  2. ग्राहक ब्राउज़र फ़ाइलें कैश करेंगे, इसलिए यदि आप JQuery के Google संस्करण का उपयोग करते हैं, तो इसे अपने सर्वर से डाउनलोड नहीं करना होगा। आपको बैंडविड्थ बचा रहा है।

  3. $(document).ready(function() {}) पसंदीदा विकल्प है। $(function() {}) बस निष्पादन के लिए ब्लॉक को परिभाषित करता है, यह पृष्ठ के तैयार होने के बाद ही निष्पादित होगा यदि यह निष्पादित करने के लिए पृष्ठ पर आखिरी चीज है।

+0

आप किस आधार पर 3 बिंदु का दावा करते हैं? – davin

+0

मुझे लगता है कि # 3 पर विस्तार करना अच्छा होगा। मैंने 1 या 3 का उपयोग करने में कोई अंतर नहीं देखा है (मुझे लगता है कि दस्तावेज़ लोड होने के बजाए 2 सेकंड की हिट करता है, लेकिन मुझे 100% निश्चित नहीं है) और जब मैं आपके द्वारा निर्दिष्ट विकल्प का उपयोग करना पसंद करता हूं, तो है यह वास्तव में सिंटैक्स की वजह से है (जो इसे स्पष्ट होने पर स्पष्ट करता है) या क्या अन्य अंतर हैं? – Kris

+0

यह अधिक पठनीय है ... आप जानते हैं कि इसे देखे बिना क्या कर रहा है। लगभग हर JQuery प्लगइन और साइट दस्तावेज़ तैयार दिखाता है। JQuery का उपयोग करने के लिए मैंने जो भी कंपनी काम की है, वह Document.ready का उपयोग करता है। यह निश्चित रूप से निश्चित रूप से उपयोग किया जाता है। जो मुझे लगता है कि यह पसंदीदा विकल्प बनाता है। –

1

1: नहीं यह पूरी तरह से आपके ऊपर है। आम तौर पर jQuery एक प्रदर्शन जुर्माना लगाता है, क्योंकि यह अमूर्तता की एक अतिरिक्त परत है। केवल इसका इस्तेमाल करें, अगर आपको लगता है कि यह आपको अपना काम आसान बनाने में मदद करता है। हालांकि, जब तक आपको प्रदर्शन के लिए अनुकूलित करने की ज़रूरत नहीं है, तब तक इसका उपयोग करने में लाभ लागत से काफी दूर होगा। jQuery आपको क्रॉसब्रोसर संगतता का परीक्षण और परीक्षण करने देता है, यदि आप वहां के सभी अलग-अलग ब्राउज़रों को पूरा करना चाहते हैं, तो अपने आप को लागू करने के लिए एक महंगा संबंध हो सकता है।

2: गूगल्स संस्करण का उपयोग करें: इस तरह एक मौका है कि आपके उपयोगकर्ताओं को पहले से ही कैश किया गया है और इसे अपनी साइट से फिर से लोड करने की आवश्यकता नहीं है।

3: दूसरा विकल्प, शॉर्टकट का उपयोग उस बिंदु पर बहुत व्यापक रूप से किया जाता है जहां मैं कहूंगा कि यह पसंद किया गया है, भले ही पहला विकल्प अच्छा और विशिष्ट है। मैं 3 विकल्प

+0

मुझे लगता है कि आप क्रिस से सहमत नहीं हैं। क्या समय जुर्माना नगण्य है या क्या मुझे वास्तव में इसके बारे में पता होना चाहिए? – pimvdb

+1

मुझे लगता है कि बिंदु 1 में ओपी $() का जिक्र कर रहा था। क्लिक करें() बनाम onclick = "", और मुझे लगता है कि आपने jQuery बनाम शुद्ध जावास्क्रिप्ट का उत्तर दिया है। यदि ऐसा है, तो मैं इसे आपके जैसा भी समझा, हालांकि अन्य उत्तरों अलग-अलग सोचते हैं, और दूसरे विचार पर, मुझे लगता है कि वे सही हैं। यद्यपि शायद आपको – davin

+0

@pim गलत समझा गया है: यह निर्भर करता है कि आपको क्या चाहिए। jQuery सुविधा के लिए है और यह गंभीरता से विकास के समय को काट सकता है। यदि आप जिस एप्लिकेशन का निर्माण कर रहे हैं, वह बड़ी मात्रा में डेटा को संभालने में सक्षम नहीं है, संभावना है कि अबास्ट्रक्शन लेयर का प्रदर्शन जुर्माना एक गैर-मुद्दा है।यदि आप मुझे एक बड़ी परियोजना पर काम करना पसंद करते हैं जो बहुत बड़ी डेटा मात्राओं को संभालता है, तो jQuery एक बाधा बन सकता है जब भी आप विकास के समय की लागत कम हो जाते हैं, –

2

1.) हाँ और नहीं, ये माना जाता है सबसे अच्छा अभ्यास का उपयोग करेंगे कभी नहीं jQuery का उपयोग कर या नहीं की परवाह किए बिना घटनाओं unobtrusive बाध्य करने के लिए (इसका मतलब है, सख्ती से अलग javascript, html और किसी भी अन्य भाषा)। चूंकि jQuery आसानी से घटनाओं को बांधने की अनुमति देता है, यह इनलाइन-हैंडलर का उपयोग करने का एक बेहतर तरीका है।

2।) आपको कैशिंग उद्देश्यों के लिए jQuery जैसी स्थिर फ़ाइलों को वितरित करने के लिए एक सीडीएन (जैसे Google) का उपयोग करना चाहिए + उनके पास एक विशाल सर्वर नेटवर्क है जो आपके अपने मेजबान से भी तेज हो सकता है।

3.) मैं पहले दो कॉलों के साथ रहूंगा। वैसे भी, मूल रूप से वे सभी यह करना होगा, लेकिन सबसे अच्छा पठनीयता शायद $(document).ready(function() {});

0
  1. मैं व्यक्तिगत रूप से "सफाई से अलग जे एस HTML से" दर्शन का समर्थन नहीं करता है। मैं शायद ही कभी वास्तविक दुनिया के उपयोग के मामलों को देखता हूं जहां इसका कोई लाभ होता है। जेएस से एचटीएमएल को अलग करने से अक्सर एचटीएमएल में "एक्स करने के लिए यहां क्लिक करें" बटन होते हैं लेकिन कुछ भी नहीं करते जब तक उचित जावास्क्रिप्ट उनके साथ न हो। बिंदु याद आती है। jQuery और घटनाओं के मामले में ... मुझे एक ऐप डीबग करना बहुत आसान लगता है अगर मैं फ़ायरबग में एक HTML बटन का निरीक्षण कर सकता हूं और देख सकता हूं कि वह बटन क्या करता है (ऑनक्लिक विशेषता को देखकर)।
  2. Google संस्करण का उपयोग कैशिंग के साथ सहायता कर सकता है, लेकिन सीधे jquery.com से लिंक न करें। हमने यहां एक बार ऐसा किया और वे नीचे चले गए, हमें उनके साथ ले गए।
+0

रखरखाव दुःस्वप्न। यदि आप जानना चाहते हैं कि कोई बटन क्या करता है, तो वर्णनात्मक आईडी/कक्षा के नामों का उपयोग करें। आपका "एक्स करने के लिए यहां क्लिक करें" परिदृश्य बस खराब डिज़ाइन है, कोई उचित नो-जेएस फ़ॉलबैक नहीं है। – kapa

+0

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

2

1) अपनी सभी घटनाओं को अपनी स्क्रिप्ट में बाध्यकारी रखें। इससे बाद में बदलना आसान हो जाता है। आप सभी घटना-संबंधित तर्कों को देखने के लिए एक ही स्थान होने की भी सराहना करेंगे।

2) यह answered very well already रहा है।

3) मैं अपनी संक्षिप्तता के लिए # 2 पसंद करते हैं, लेकिन वास्तव में यह करने के लिए आदर्श तरीका like this है:

jQuery(function($) { 
    // Your code using failsafe $ alias here... 
}); 

कि संघर्ष यदि आप अन्य चौखटे है कि $ परिभाषित का उपयोग कर रहे बचें।

+0

लिंक और टिप – pimvdb

1

3 डी बिंदु के लिए, उनमें से कोई भी नहीं। आमतौर पर </body> टैग बंद होने से पहले अपनी स्क्रिप्ट को स्थानांतरित करने के लिए प्रदर्शन कारणों से इसकी अनुशंसा की जाती है। इस प्रकार आपको ready ईवेंट की प्रतीक्षा करने की आवश्यकता नहीं होगी: इस चरण में, पृष्ठ पहले ही लोड हो चुका है।

चेक Jquery Cookbox (O'Reilly), अध्याय 1.2: निष्पादित jQuery/जावास्क्रिप्ट कोडित अटेर डोम लोड होते ही लेकिन इससे पहले कि पूरा पृष्ठ लोड (उस किताब है एक सब में अवश्य पढ़ें)

इस तकनीक के बारे में एक त्वरित विचार है करने के लिए, Move jQuery to the end of body tag? देखें (इस विषय के बारे में SO पर कई अन्य पोस्ट हैं)

+0

के लिए धन्यवाद, मैं आपका पॉइंट देखता हूं, लेकिन अगर मैं गलत नहीं हूं तो