आपका शुरुआती वाक्य वास्तव में Backbone.js और jQuery के बीच के अंतर का एक बहुत अच्छा बयान था, इसलिए इसे थोड़ा अनपैक करें।
एक बात के लिए, दो पुस्तकालय प्रतिस्पर्धा में बिल्कुल नहीं हैं - वे मानार्थ हैं।
एक उदाहरण के रूप में, यहाँ कुछ चीजें हैं जो मैं jQuery के साथ करूंगा:
- एनिमेटेड स्लाइडशो
- एक आईओएस-स्टाइल नंबर "स्पिनर" की तरह फॉर्म नियंत्रण में वृद्धि
- एक वर्ग के नाम के आधार पर तत्वों की टॉगलिंग दृश्यता
और कुछ चीजें जो मैं Backbone.js में कर सकता हूं:
- एक फोटो एल्बम बनाएं, जहां उपयोगकर्ता एक थंबनेल पर क्लिक करता है और फ़ोटो का एक बड़ा संस्करण देख सकता है, साथ ही कुछ डेटा जैसे कैमरा का उपयोग किया गया था, स्थान और फोटोग्राफर का नाम
- एक मास्टर / विवरण प्रकार का पेज बनाएं जो डेटा का एक ग्रिड प्रस्तुत करता है और उपयोगकर्ता को व्यक्तिगत तत्वों पर क्लिक करने और उन्हें एक रूप में अपडेट करने की अनुमति देता है।
माइक्रो लेवल पर jQuery के एक्सेल - पेज एलिमेंट्स को सेलेक्ट करते हुए, ब्राउजर्स को हैंडल करने के तरीकों में अंतर को स्मूद करते हुए।
Backbone.js अधिक बड़ी तस्वीर है। यह आपको डेटा और एप्लिकेशन लॉजिक को प्रबंधित करने में मदद करता है। ऊपर दिए गए फोटो एल्बम उदाहरण में, बैकबोन कई उपयोगी संरचनाएं प्रदान करता है: आपके पास फ़ोटो से संबंधित डेटा (एक मॉडल), एल्बम में सभी फ़ोटो की एक सूची (एक संग्रह), और कहीं न कहीं रखने के लिए कुछ होगा। तर्क जो यह निर्धारित करता है कि जब कोई उपयोगकर्ता थंबनेल (दृश्य) पर क्लिक करता है तो क्या होता है। बैकबोन नियंत्रण या अनुप्रयोग में वे मुख्य टुकड़े हैं।
Backbone.js को jQuery से लाभ मिलता है, हालांकि, या ऐसा कुछ, जो आपके एप्लिकेशन के डेटा और तर्क के परिणामों को DOM में प्रस्तुत करने में मदद करता है। यह आम है, उदाहरण के लिए, पृष्ठ पर उस तत्व का चयन करने के लिए jQuery का उपयोग करना जो आपके बैकबोन ऐप के लिए कंटेनर के रूप में काम करेगा। $(function () {});
अपने बैकबोन नियंत्रण के टुकड़ों को फायर करने के लिए jQuery का उपयोग करना भी आम है । आप संभवतः jQuery के साथ प्रपत्र फ़ील्ड सत्यापन त्रुटि संदेश भी प्रदर्शित करेंगे।
आप निश्चित रूप से jQuery में बड़े, जटिल उपयोगकर्ता इंटरफेस का निर्माण कर सकते हैं। हमारे पास ऐप में कुछ हैं जो मैं काम पर रखता हूं। लेकिन उनके साथ काम करना मुश्किल है क्योंकि jQuery किसी एप्लिकेशन को संरचना प्रदान करने के लिए डिज़ाइन नहीं किया गया है। विशेष रूप से, jQuery का एपीआई, जो आइटमों के समूहों का चयन करने और फिर कॉलबैक फ़ंक्शंस को पास करने पर आधारित है जो उन वस्तुओं को हेरफेर करता है, एक बड़े, जटिल नियंत्रण या ऐप में उपयोग करने के लिए एक अच्छा पैटर्न नहीं है। आप बहुत से नेस्टेड कार्यों को समाप्त करते हैं और यह देखना बहुत कठिन है कि क्या हो रहा है।
मैं वर्तमान में Backbone.js में उन नियंत्रणों में से एक का काम कर रहा हूं। एक अंतिम उदाहरण के रूप में, यहां एक त्वरित सारांश है कि दोनों अलग-अलग पुस्तकालयों में एक ही नियंत्रण पर काम करते समय मेरी विचार प्रक्रिया कैसे भिन्न होती है।
JQuery में, मैं इसके बारे में चिंतित हूं:
- क्या मैं उन
li
तत्वों के समूह को हथियाने के लिए सही चयनकर्ता का उपयोग कर रहा हूँ जो मुझे चाहिए?
- क्या इस अजाक्स कॉल के पूरा होने पर मुझे मूल्यों की उस सूची को फिर से खोलना होगा?
- मैं इन सरणी मानों
input
को पृष्ठ के तत्वों में वापस कैसे डाल सकता हूं ?
बैकबोन में, मैं अधिक ध्यान केंद्रित कर रहा हूं:
- मेरे मॉडल आइटम पर गुणों के इस सेट को मान्य करने के लिए सही तर्क क्या है?
- जब उपयोगकर्ता ऐड बटन पर क्लिक करता है, तो क्या मुझे तुरंत संग्रह में एक नया आइटम जोड़ना चाहिए, या क्या मुझे तब तक इंतजार करना चाहिए जब तक वे सभी डेटा भर नहीं गए हैं और यह "वैध" है?
- मेरे संग्रह में एक आइटम को कैसे प्रतिक्रिया देनी चाहिए जब आइटम को तुरंत पहले या बाद में हटा दिया जाता है?
jQuery के नॉटी-ग्रिट्टी विवरणों को संभालता है, और बैकबोन अधिक उच्च-स्तरीय है।
समापन में, मैंने Backbone.js उदाहरणों पर चर्चा करते समय "कंट्रोल" और "ऐप" शब्दों का उपयोग किया है। यह सच नहीं है कि Backbone.js सिर्फ सिंगल पेज ऐप्स के लिए है। यह सच है, हालांकि, Backbone.js जटिल अनुप्रयोगों के निर्माण के लिए अच्छा है जो डेटा में हेरफेर करते हैं और बहुत सारे तर्क को संभालते हैं। छोटे पैमाने के यूआई तत्वों के लिए इसका उपयोग करना मूर्खतापूर्ण होगा - अतिरिक्त संरचना जो इसे लगाता है, उसकी आवश्यकता नहीं है।
अद्यतन: कई पृष्ठों के मुद्दे पर, हाँ, बैकबोन आपके डेटा को बनाए रखने के लिए एक शक्तिशाली तंत्र प्रदान करता है। प्रत्येक मॉडल में एक save
विधि होती है जो सर्वर पर परिवर्तनों को संग्रहीत करने के लिए एक AJAX कॉल को निष्पादित करेगी। इसलिए जब तक आप अपना डेटा सहेजते हैं, तब तक आपके पास एक बहु-पृष्ठ ऐप हो सकता है। यह एक बहुत ही लचीला मॉडल है, और यह है कि हम कैसे काम पर बैकबोन का उपयोग करेंगे। जबकि मुझे सिंगल-पेज ऐप बनाना पसंद है, हमारे मौजूदा मल्टी-पेज एप्लिकेशन में 10 साल का काम है। हम बैकबोन में हमारे कुछ अधिक तीव्र यूआई घटकों को फिर से बनाना चाहते हैं, फिर उपयोगकर्ता को किसी भिन्न पृष्ठ पर ले जाने से पहले सर्वर में परिवर्तन सिंक करें।