बैकबोन.जेएस का उद्देश्य क्या है?


442

मैंने इसकी साइट http://documentcloud.github.com/backbone से backbone.js की उपयोगिता को समझने की कोशिश की , लेकिन मैं अभी भी इसका पता नहीं लगा सका।

क्या कोई यह बताकर मेरी मदद कर सकता है कि यह कैसे काम करता है और यह बेहतर जावास्क्रिप्ट लिखने में कैसे मददगार हो सकता है?


36
यह एमवीसी ढांचा है। यह आपको अपने डेटा को मॉडल में और आपके DOM हेरफेर को विचारों में अमूर्त करने और घटनाओं का उपयोग करके दोनों को एक साथ बांधने के लिए प्रोत्साहित करता है।
रेयानोस

MVC के संदर्भ में एक "दृश्य" घटनाओं को कैसे संभाल सकता है? यह वही है जो उनके परिचय में दावा करता है।

3
यह सीखने लायक है। मुझे शुरू करने में कठिन समय था, लेकिन सीखने की अवस्था में कुछ कूबड़ होने के बाद यह वास्तव में बहुत कठिन नहीं है। शराब तहखाने के डेमो से शुरू करें।
kmitchel46725

2
बैकबोन के संदर्भ में, दृश्य प्रकार एक नियंत्रक के रूप में दोगुना हो जाता है। यह DOM ईवेंट्स को सुनता है और उन्हें उचित रूप में मॉडल तक चक करता है। यह आपके मॉडल और संग्रह में बदलावों को भी सुनता है और DOM को उचित रूप से रीडायरेक्ट करता है। बैकबोन एक एमवी पैटर्न है, लेकिन सी निहित है। यदि बैकबोन रेल थे, तो टेम्पलेट दृश्य होगा, और दृश्य नियंत्रक होगा।
सुपरलूमरी जूल

मुझे लगा कि यह MVVM फ्रेमवर्क है क्योंकि यह वास्तव में नियंत्रक प्रदान नहीं करता है।
सोल्यूएबल नॉनगन

जवाबों:


393

Backbone.js मूल रूप से एक uber-light ढांचा है जो आपको MVC (मॉडल, व्यू, कंट्रोलर) फैशन में अपने जावास्क्रिप्ट कोड को संरचना करने की अनुमति देता है जहां ...

मॉडल आपके कोड का हिस्सा है जो डेटा को पुनर्प्राप्त और पॉप्युलेट करता है,

देखें इस मॉडल का HTML प्रतिनिधित्व है (विचार मॉडल परिवर्तन के रूप में बदलते हैं, आदि)

और वैकल्पिक नियंत्रक जो इस मामले में आपको हैशबंग URL के माध्यम से अपने जावास्क्रिप्ट एप्लिकेशन की स्थिति को बचाने की अनुमति देता है, उदाहरण के लिए: http://twitter.com/#search?q=backbone.js

कुछ नियम जो मैंने बैकबोन के साथ खोजे हैं:

  • कोई और जावास्क्रिप्ट स्पैगेटी: कोड संगठित और शब्दशः अर्थपूर्ण .js फ़ाइलों में टूट गया है, जिन्हें बाद में संयुक्त रूप से JITIT का उपयोग करके जोड़ा गया है

  • और नहीं jQuery.data(bla, bla): DOM में डेटा संग्रहीत करने की आवश्यकता नहीं है, इसके बजाय मॉडल में डेटा संग्रहीत करें

  • इवेंट बाइंडिंग सिर्फ काम करता है

  • अत्यंत उपयोगी अंडरस्कोर उपयोगिता पुस्तकालय

  • backbone.js कोड अच्छी तरह से प्रलेखित है और एक महान पढ़ा है। कई जेएस कोड तकनीकों से मेरी आंखें खुलीं।

विपक्ष:

  • मुझे अपने सिर को उसके चारों ओर लपेटने के लिए कुछ समय लगा और यह पता लगाने के लिए कि इसे मेरे कोड पर कैसे लागू किया जाए, लेकिन मैं एक जावास्क्रिप्ट नौसिखिया हूं।

यहाँ बैक-एंड के रूप में रेल्स के साथ बैकबोन का उपयोग करने पर शानदार ट्यूटोरियल का एक सेट दिया गया है:

CloudEdit: रेल के साथ एक Backbone.js ट्यूटोरियल:

http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/

http://www.jamesyu.org/2011/02/09/backbone.js-tutorial-with-rails-part-2/

ps इस अद्भुत संग्रह वर्ग में भी है जो आपको मॉडल के संग्रह से निपटने और नेस्टेड मॉडल की नकल करने की सुविधा देता है, लेकिन मैं आपको शुरुआत से भ्रमित नहीं करना चाहता।


1
एक और उपयोगी ट्यूटोरियल: coenraets.org/blog/2012/01/...
जेफरी निकोल्सन कैरे

16
यह उत्तर गलत है। बैकबोन MVC फ्रेमवर्क नहीं है। यह एक एमवी * ढांचा है। मुख्य घटकों को समझना महत्वपूर्ण है। और इसमें कंट्रोलर्स नहीं होते। सौभाग्य।

3
बस फिर से दोहराने के लिए, बैकबोन लाइब्रेरी में स्वयं नियंत्रक नहीं हैं, हालांकि जेरेमी एशकेनस ने कहा है कि ऑब्जेक्ट्स को अपनी जगह लेने के लिए देखें क्योंकि वे जावास्क्रिप्ट ऑब्जेक्ट हैं जो स्वयं के मॉडल हैं और सामने के अंत से डेटा और फेरबदल करते हैं। एक नियंत्रक, एक सेवा को लागू करने से रोकने के लिए निश्चित रूप से कुछ भी नहीं है, यहां तक ​​कि एक ViewModel भी आपको चाहिए, यह सिर्फ जावास्क्रिप्ट है।
सुपरलाइनरी

3
क्या है जम्मू? ɯnɯıuıɯ ʇunoɔ ɹǝʇɔɐɹɐɥɔ
user1717828

1
RE: "jQuery.data (bla, bla): DOM में डेटा स्टोर करने की कोई आवश्यकता नहीं है" IIRC, jQuery स्टोर जो वैसे भी मेमोरी में है। अर्थात यह data-DOM तत्वों पर वापस विशेषता सेट नहीं करता है । (इसलिए यदि आपके HTML data-में पेज लोड होने पर विशेषताएँ होती हैं, और उन्हें बदल दिया जाता है, तो DOM और इन-मेमोरी प्रतिनिधित्व OOS होगा - लेकिन आपको वैसे भी इन-मेम डेटा के साथ काम करना चाहिए)
JoeBrockhaus

250

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

यदि आप जो निर्माण करने की योजना बना रहे हैं वह कुछ ऐसा है जहां यूआई नियमित रूप से बदलता है कि यह कैसे प्रदर्शित होता है, लेकिन पूरे नए पृष्ठों को प्राप्त करने के लिए सर्वर पर नहीं जाता है, तो आपको शायद बैकबोन.जेएस या सैमी.जेएस जैसी कुछ की आवश्यकता है। कुछ इस तरह का कार्डिनल उदाहरण Google का GMail है। यदि आपने कभी इसका उपयोग किया है, तो आप देखेंगे कि यह HTML, CSS और JavaScript का एक बड़ा हिस्सा डाउनलोड करता है जब आप पहली बार लॉग इन करते हैं और उसके बाद पृष्ठभूमि में सब कुछ होता है। यह एक ईमेल को पढ़ने और इनबॉक्स को संसाधित करने और खोज करने और उन सभी के माध्यम से वापस जाने के बीच आगे बढ़ सकता है, जब तक कि पूरे नए पृष्ठ को प्रस्तुत किए जाने के लिए कभी भी पूछे बिना।

यह उस तरह का ऐप है जो इन चौखटों को विकसित करने में आसान बनाता है। उनके बिना आप या तो कार्यक्षमता के कुछ हिस्सों (उदाहरण के लिए, इतिहास प्रबंधन के लिए jQuery BBQ, घटनाओं के लिए jj, आदि) के लिए व्यक्तिगत पुस्तकालयों के एक विविध सेट को एक साथ खत्म कर देंगे या आप सब कुछ खुद ही बना लेंगे। और अपने आप को सब कुछ बनाए रखने और परीक्षण करने के लिए। कंट्रास्ट जैसे कि बैकबोन.जेएस के साथ, जिसमें हजारों लोग इसे गितूब पर देख रहे हैं, सैकड़ों कांटे जहां लोग इस पर काम कर रहे हैं, और सैकड़ों सवाल पहले ही यहां पूछे गए और स्टैक ओवरफ्लो पर जवाब दिए गए हैं।

लेकिन इसका कोई भी महत्व नहीं है यदि आप जो निर्माण करने की योजना बनाते हैं, वह पर्याप्त जटिल नहीं है, जो एक ढांचे से जुड़े सीखने की अवस्था के लायक हो। यदि आप अभी भी PHP, जावा, या कुछ और साइटों का निर्माण कर रहे हैं, जहां बैक एंड सर्वर अभी भी उपयोगकर्ता द्वारा अनुरोध पर वेब पेज बनाने के सभी भारी उठाने कर रहा है और जावास्क्रिप्ट / jQuery सिर्फ उस प्रक्रिया पर आधारित है, तो आप ' t की जरूरत है या अभी तक Backbone.js के लिए तैयार नहीं हैं।


21
जीमेल की तुलना के लिए धन्यवाद। मेरे लिए यह जानने का एक आसान तरीका था कि जिस साइट को मैं विकसित कर रहा हूं, उसके लिए मुझे इसमें और अधिक देखने की जरूरत नहीं है।
एरिक हू

15
+1 यह उल्लेख करने के लिए कि आप बैकबोन की तरह कुछ लिखेंगे। वैसे भी अगर आपका प्रोजेक्ट काफी बड़ा हो जाता है तो फिर से: ग्रीनस्पैन का 10 वां नियम
मैथ्यू लॉक

यदि आप PHP या किसी वेब सेवा के लिए समापन बिंदु के समान कुछ भी उपयोग कर रहे हैं, तो आप पारंपरिक अनुरोध / प्रतिक्रिया शैली विकास विकास ढांचे के 80 या 90% का उपयोग नहीं कर रहे हैं। तो इस तरह का एक बड़ा अंतर यह है कि इस तरह के ऐप का निर्माण एक अधिक पारंपरिक वेब ऐप के रूप में होता है।
जॉन मुन्सच

2
धन्यवाद जॉन आपके उत्तर के लिए इसका वास्तव में ज्ञानवर्धक है
सुशील भैरवी

1
जीमेल संदर्भ ने वास्तव में मेरी आँखें खोल दीं। धन्यवाद!
टी। कुकुरता

95

बैकबोन है ...

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

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

यदि आपके पास एक एपीआई है, तो बैकबोन में कुछ सहायक विशेषताएं हैं जो आपको इसके बारे में बात करने में मदद करेंगी, लेकिन आप किसी भी स्थिर HTML पेज में अन्तरक्रियाशीलता जोड़ने के लिए बैकबोन का उपयोग कर सकते हैं।

रीढ़ की हड्डी के लिए है ...

... जावास्क्रिप्ट में संरचना जोड़कर।

क्योंकि जावास्क्रिप्ट किसी विशेष पैटर्न को लागू नहीं करता है, इसलिए जावास्क्रिप्ट एप्लिकेशन बहुत जल्दी गड़बड़ हो सकते हैं। जिस किसी ने भी जावास्क्रिप्ट में तुच्छ से परे कुछ बनाया है, संभवतः सवालों के खिलाफ भाग जाएगा:

  1. मैं अपना डेटा कहां संग्रहीत करूंगा?
  2. मैं अपने कार्य कहां रखूंगा?
  3. मैं अपने कार्यों को एक साथ कैसे करूंगा, ताकि वे समझदार तरीके से बुलाए जाएं और स्पेगेटी की ओर मुड़ें नहीं?
  4. मैं विभिन्न डेवलपर्स द्वारा इस कोड को कैसे बनाए रख सकता हूं?

बैकबोन आपको देकर इन सवालों के जवाब चाहता है:

  • मॉडल और संग्रह आपको डेटा और डेटा के संग्रह का प्रतिनिधित्व करने में मदद करने के लिए।
  • जब आपका डेटा बदलता है, तो आपको अपने DOM को अपडेट करने में मदद करने के लिए दृश्य।
  • एक घटना प्रणाली ताकि घटक एक दूसरे को सुन सकें। यह आपके घटकों को डी-युग्मित रखता है और स्पेगेटीफिकेशन को रोकता है।
  • समझदार सम्मेलनों का एक न्यूनतम सेट, इसलिए डेवलपर्स एक ही कोडबेस पर एक साथ काम कर सकते हैं।

हम इसे एमवी * पैटर्न कहते हैं। मॉडल, दृश्य और वैकल्पिक अतिरिक्त।

बैकबोन हल्का है

प्रारंभिक दिखावे के बावजूद, बैकबोन काल्पनिक रूप से हल्का है, यह शायद ही कुछ भी करता है। यह क्या करता है बहुत मददगार है।

यह आपको छोटी वस्तुओं का एक सेट देता है जिसे आप बना सकते हैं, और जो घटनाओं का उत्सर्जन कर सकते हैं और एक दूसरे को सुन सकते हैं। आप उदाहरण के लिए एक टिप्पणी का प्रतिनिधित्व करने के लिए एक छोटी सी वस्तु बना सकते हैं, और फिर ब्राउज़र में किसी विशेष स्थान पर टिप्पणी के प्रदर्शन का प्रतिनिधित्व करने के लिए एक छोटी टिप्पणी दृश्य वस्तु।

आप टिप्पणी को देखने के लिए टिप्पणी देख सकते हैं और टिप्पणी बदल जाने पर खुद को फिर से तैयार कर सकते हैं। यहां तक ​​कि अगर आपके पास अपने पृष्ठ पर कई स्थानों पर समान टिप्पणी प्रदर्शित है, तो ये सभी दृश्य एक ही टिप्पणी मॉडल को सुन सकते हैं और सिंक में रह सकते हैं।

कोड बनाने का यह तरीका आपको कई उलझनों के साथ बहुत बड़ा होने पर भी आपको उलझने से बचाने में मदद करता है।

मॉडल

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

डेटा विशेषताएँ इस तरह दिखती हैं:

<p data-username="derek" data-age="42"></p>

बैकबोन आपके डेटा और संबंधित विधियों का प्रतिनिधित्व करने के लिए एक मॉडल ऑब्जेक्ट प्रदान करके इसे हल करता है । कहते हैं कि आपके पास एक टूडू सूची है, आपके पास उस सूची में प्रत्येक आइटम का प्रतिनिधित्व करने वाला एक मॉडल होगा।

जब आपका मॉडल अपडेट किया जाता है, तो यह एक ईवेंट को फायर करता है। आपके पास उस विशेष वस्तु से बंधा हुआ दृश्य हो सकता है। दृश्य मॉडल परिवर्तन की घटनाओं को सुनता है और खुद को फिर से प्रस्तुत करता है।

दृश्य

Backbone आपको DOM पर बात करने वाली View ऑब्जेक्ट्स प्रदान करता है। सभी फ़ंक्शंस जो DOM को मैनिपुलेट करते हैं या DOM ईवेंट्स को सुनने के लिए यहां जाते हैं।

एक दृश्य आम तौर पर एक रेंडर फ़ंक्शन को लागू करता है जो पूरे दृश्य को फिर से दिखाता है, या संभवतः दृश्य का हिस्सा होता है। रेंडर फ़ंक्शन को लागू करने के लिए कोई दायित्व नहीं है, लेकिन यह एक सामान्य सम्मेलन है।

प्रत्येक दृश्य डोम के एक विशेष हिस्से से जुड़ा होता है, इसलिए आपके पास एक सर्चफ़ॉर्मव्यू हो सकता है, जो केवल खोज फ़ॉर्म को सुनता है, और शॉपिंगकार्ट व्यू, जो केवल खरीदारी कार्ट को प्रदर्शित करता है।

दृश्य आमतौर पर विशिष्ट मॉडल या संग्रह के लिए भी बाध्य होते हैं। जब मॉडल अद्यतन करता है, तो यह एक घटना को आग लगाता है जिसे दृश्य सुनता है। दृश्य उन्हें खुद को पुनः प्रस्तुत करने के लिए प्रस्तुतिकरण कह सकते हैं।

इसी तरह, जब आप किसी फॉर्म में टाइप करते हैं, तो आपका दृश्य किसी मॉडल ऑब्जेक्ट को अपडेट कर सकता है। उस मॉडल को सुनने वाला हर दूसरा दृश्य तब अपने रेंडर फ़ंक्शन को कॉल करेगा।

यह हमें उन चिंताओं का एक अलग रूप देता है जो हमारे कोड को साफ सुथरा रखता है।

रेंडर समारोह

आप अपने रेंडर फ़ंक्शन को किसी भी तरह से लागू कर सकते हैं जिसे आप फिट देखते हैं। DOM को मैन्युअल रूप से अपडेट करने के लिए आप यहाँ कुछ jQuery डाल सकते हैं।

आप एक टेम्पलेट भी संकलित कर सकते हैं और उसका उपयोग कर सकते हैं। एक प्रविष्टि प्रविष्टि बिंदु के साथ एक स्ट्रिंग है। आप इसे JSON ऑब्जेक्ट के साथ एक संकलित फ़ंक्शन को पास करते हैं और एक संकलित स्ट्रिंग वापस प्राप्त करते हैं जिसे आप अपने DOM में सम्मिलित कर सकते हैं।

संग्रह

आपके पास संग्रह की पहुंच भी है जो मॉडल की सूची संग्रहीत करते हैं, इसलिए एक todoCollection, todo मॉडल की एक सूची होगी। जब कोई संग्रह किसी मॉडल को प्राप्त करता है या खो देता है, तो उसका क्रम बदलता है, या संग्रह अद्यतनों में एक मॉडल होता है, तो पूरा संग्रह एक घटना को आग लगा देता है।

जब भी संग्रह अपडेट होता है, तो एक दृश्य संग्रह को सुन सकता है और खुद को अपडेट कर सकता है।

आप अपने संग्रह में सॉर्ट और फ़िल्टर विधियाँ जोड़ सकते हैं, और उदाहरण के लिए इसे अपने आप सॉर्ट कर सकते हैं।

और इवेंट्स टु टाईट ऑल टुगेदर

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

shoppingCartView.listenTo(shoppingCart, "add", shoppingCartView.render);

बेशक, अन्य ऑब्जेक्ट भी शॉपिंगकार्ट को सुन रहे होंगे, और अन्य चीजें भी कर सकते हैं जैसे कुल अपडेट करना, या स्थानीय भंडारण में राज्य को बचाना।

  • दृश्य मॉडल को सुनते हैं और मॉडल में बदलाव होने पर प्रस्तुत करते हैं।
  • जब संग्रह में कोई आइटम बदलता है, तो दृश्य संग्रह को सुनता है (या ग्रिड या मानचित्र आदि) सूची को प्रस्तुत करता है।
  • मॉडल दृश्य को सुनते हैं ताकि वे राज्य बदल सकें, शायद जब कोई फ़ॉर्म संपादित किया जाता है।

अपनी वस्तुओं को इस तरह से काटना और घटनाओं का उपयोग करके संवाद करने का मतलब है कि आप कभी भी गाँठ में उलझेंगे नहीं, और नए घटकों और व्यवहार को जोड़ना आसान होगा। आपके नए घटकों को सिस्टम में पहले से मौजूद अन्य वस्तुओं को सुनना होगा।

कन्वेंशनों

बैकबोन के लिए लिखे गए कोड सम्मेलनों के ढीले सेट का अनुसरण करते हैं। DOM कोड एक व्यू में आता है। संग्रह कोड एक संग्रह में आता है। व्यापार तर्क एक मॉडल में जाता है। आपके कोडबेस को उठाने वाला एक और डेवलपर ग्राउंड रनिंग को हिट करने में सक्षम होगा।

सारांश में

बैकबोन एक हल्का पुस्तकालय है जो आपके कोड में संरचना को उधार देता है। घटक अपघटित होते हैं और घटनाओं के माध्यम से संवाद करते हैं ताकि आप गड़बड़ न हों। आप अपने कोडबेस को आसानी से विस्तारित कर सकते हैं, बस एक नई वस्तु बनाकर और इसे अपने मौजूदा ऑब्जेक्ट को उचित रूप से सुन सकते हैं। आपका कोड क्लीनर, अच्छे, और अधिक रखरखाव योग्य होगा।

मेरी छोटी सी किताब

मुझे बैकबोन इतनी पसंद आई कि मैंने इसके बारे में थोड़ा इंट्रो बुक लिख दिया। आप इसे यहाँ ऑनलाइन पढ़ सकते हैं: http://nicholasjohnson.com/backbone-book/

मैंने सामग्री को एक छोटे ऑनलाइन पाठ्यक्रम में भी तोड़ दिया, जिसे आप यहां पा सकते हैं: http://www.forwardadvance.com/course/backbone । आप लगभग एक दिन में कोर्स पूरा कर सकते हैं।


1
क्या तकनीकी रूप से कोई टेम्प्लेट प्रस्तुत नहीं करता है, न कि वास्तव में 'स्वयं'? यह 'प्रस्तोता' या 'ViewModel' की भूमिका अधिक लगता है।
जोबोराहॉस

1
अच्छा बिंदु, हालांकि दृश्य आपके द्वारा पूछे जाने वाले किसी भी चीज़ को प्रस्तुत कर सकता है। यह एक टेम्प्लेट हो सकता है, कुछ मनमाना jQuery, या यहां तक ​​कि छोटे रूप में कुछ मूल्य, या बिल्ला में एक संख्या हो सकती है।
सुपरल्यूमिनरी

3
@superluminary असली मदद करता है !!
Antoops

2
बहुत बढ़िया व्याख्या!
टेस्टीकोड

3
किताब बहुत मददगार है। इसे लिखने के लिए धन्यवाद।
चो

32

यहाँ एक दिलचस्प प्रस्तुति है:

Backbone.js के लिए एक परिचय

संकेत (स्लाइड्स से):

  • ब्राउज़र में रेल? नहीं
  • जावास्क्रिप्ट के लिए एक MVC फ्रेमवर्क? क्रमबद्ध करें
  • एक बड़ी वसा राज्य मशीन? हाँ !

14

Backbone.js एक जावास्क्रिप्ट ढांचा है जो आपको अपना कोड व्यवस्थित करने में मदद करता है। यह शाब्दिक रूप से एक रीढ़ की हड्डी है जिस पर आप अपने आवेदन का निर्माण करते हैं। यह विजेट प्रदान नहीं करता है (जैसे jQuery UI या Dojo)।

यह आपको बेस कक्षाओं का एक शांत सेट देता है जिसे आप अपने सर्वर पर Restful समापन बिंदुओं के साथ इंटरफेस करने वाले क्लीन जावास्क्रिप्ट कोड बनाने के लिए बढ़ा सकते हैं।


मैं अपने प्रोजेक्ट पर jQuery और म्यूटूल और सामान्य जावास्क्रिप्ट का भारी उपयोग करता हूं। कैसे backbone.js शपथ मुझे मदद मिलेगी और क्या है?
सुशील भवानी २

1
jQuery मुख्य रूप से DOM मैनिपुलेशन के लिए है, जहां बैकबोन को एक इवेंट संचालित फ्रेमवर्क के रूप में उपयोग करने के साथ-साथ मॉडलिंग डेटा के लिए उपयोग किया जाता है।
रॉबर्टपिट

14

JQuery और Mootools आपके प्रोजेक्ट के बहुत सारे टूल के साथ एक टूलबॉक्स हैं। बैकबोन आपके प्रोजेक्ट के लिए एक आर्किटेक्चर या बैकबोन की तरह काम करता है, जिस पर आप JQuery या Mootools का उपयोग करके एक एप्लिकेशन बना सकते हैं।


हाँ, वास्तव में यह मान लेना आसान है कि नाम केवल उदाहरण के लिए एक नाम है 'jquery', जिसका अर्थ है 'जावास्क्रिप्ट क्वेरी' जो वास्तव में खुद से बहुत ज्यादा प्रभावित नहीं करता है। लेकिन इस मामले में इसका काफी शाब्दिक अर्थ है रीढ़ की हड्डी :)
msanjay

11

यह एक बहुत अच्छा परिचयात्मक वीडियो है: http://vimeo.com/22685608

यदि आप रेल और बैकबोन के बारे में अधिक जानकारी प्राप्त कर रहे हैं, तो थॉटबोट के पास यह बहुत अच्छी पुस्तक है (मुफ्त नहीं): https://workbooks.thoughtbot.com/backbone-js-on-rails


11

मुझे यह स्वीकार करना होगा कि एमवीसी के सभी "फायदों" ने कभी भी मेरे काम को आसान, तेज या बेहतर नहीं बनाया है। यह सिर्फ पूरे कोडिंग अनुभव को अधिक सार और समय लेने वाला बनाता है। रखरखाव एक दुःस्वप्न है जब कोई अलग होने का गर्भाधान करने की कोशिश करता है। पता नहीं आप में से कितने लोगों ने कभी एक फ्लेक्स साइट को अपडेट करने की कोशिश की है जो MVC मॉडल के रूप में Cairngorm का उपयोग करता है लेकिन अद्यतन करने के लिए 30 सेकंड का समय लगना चाहिए, अक्सर एक ही घटना को खोजने में 2 घंटे (शिकार / अनुरेखण / डिबगिंग) लग सकते हैं )। MVC था और अभी भी है, मेरे लिए, एक "लाभ" जो आप सामान कर सकते हैं।


2
ईमानदारी से किसी भी फ्रेमवर्क संरचना को अनभिज्ञ प्रोग्रामर या प्रोग्रामर द्वारा विकृत और विकृत किया जा सकता है जो केवल देखभाल नहीं करते हैं। मैंने एक बार एक CodeIgniter साइट पर काम किया था जो कि बहुत सीधी और सरल होनी चाहिए थी। लेकिन जिस बेवकूफ के साथ मैंने काम किया, वह 90 के दशक की चीजों को करने के अभ्यस्त था, इसलिए उसने इसे OOP के भीतर एक विकृत प्रक्रियात्मक दृष्टिकोण के लिए एक साफ OOP दृष्टिकोण से बदल दिया।
पैट्रिक

9
मैंने यह भी देखा है कि कोई व्यक्ति किसी साइट को स्क्रैच से लिखता है और बिना किसी फ्रेमवर्क का उपयोग किए इसे खूबसूरती से लिखता है। एक अवसर पर यह अपेक्षाकृत नए / ग्रीन PHP प्रोग्रामर द्वारा किया गया था। वह बस एक बहुत ही तर्कसंगत दिमाग है कि चीजों को लागू करने के लिए एक बहुत चालाक तरीका काम किया है। एक अच्छे ढाँचे का उपयोग करना आपको अभी तक प्राप्त होगा। जबकि महान प्रोग्रामिंग प्रथाओं का उपयोग करने से आपको भविष्य में प्रकाश वर्ष लगेंगे।
पैट्रिक

2
@ user1415445: आप जो अनिवार्य रूप से कहते हैं उसका अर्थ है कि एक एकल वर्ग का होना जो डेटा लॉजिक, रेंडरिंग लॉजिक और प्रेजेंटेशन लेयर विजेट्स और डेटा स्टोरेज / रिट्रीवल कोड के बीच संचार को नियंत्रित करता है, अलग-अलग कक्षाओं / ऑब्जेक्ट्स द्वारा नियंत्रित इन चिंताओं में से प्रत्येक को बनाए रखने की तुलना में आसान है। जिस पर यकीन करना मुश्किल है। जब तक आप दो बार लिखे गए एक गैर-तुच्छ ऐप को प्रदर्शित कर सकते हैं, एक बार MVC के साथ और एक बार बिना, कि इसके गैर-MVC संस्करण को बनाए रखना आसान है, आदि
Behrang Saeedzadeh

1
तुच्छ से परे किसी भी एप्लिकेशन को आदर्श रूप से एक पैटर्न की आवश्यकता होती है, और एमवीसी एक उत्कृष्ट पैटर्न होता है जब आप डेटा की प्रस्तुति के साथ काम कर रहे होते हैं। ऐसा लगता है कि आपको बुरा अनुभव हुआ है, लेकिन यह पैटर्न की गलती नहीं है।
Superluminary

दस्तावेज़ीकरण हमेशा गायब रोसेटा पत्थर होगा, कोई फर्क नहीं पड़ता पैटर्न और प्रथाओं का उपयोग किया जाता है, क्योंकि वे समय के साथ बदलते हैं। MVC जैसे पैटर्न की सुंदरता यह है कि एक बार जब आप प्लंबिंग को समझ लेते हैं, तो आपको हर बार जब आप एक नया फीचर जोड़ते हैं या किसी पुराने को अपडेट करते हैं, तो आपको कभी भी प्लंबिंग लिखने में समय बर्बाद नहीं करना होगा। तो हां, जब तक आप प्लंबिंग को नहीं समझेंगे, यह व्यर्थ का व्यायाम होगा। भविष्य के अज्ञात देवों की पर्याप्त समझ सुनिश्चित करने का एकमात्र तरीका उचित पर्याप्त मानकों और ALSO दस्तावेज़ का अच्छी तरह से पालन करना है। किसी के स्पैगिटाइज्ड मेस को बनाए रखना और समझना ज्यादा तेज या आसान नहीं है ..
जोबोराहॉस


3

backbone.js है मॉडल-व्यू-नियंत्रक (MVC) जावास्क्रिप्ट के साथ लेकिन ExtJS जावा स्क्रिप्ट के द्वारा MVC पैटर्न के लिए रीढ़ की हड्डी की तुलना में बेहतर

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


3

बैकबोन को जेरेमी एशकेनस द्वारा बनाया गया था, जिन्होंने कॉफीस्क्रिप्ट भी लिखा था। जावास्क्रिप्ट-भारी एप्लिकेशन के रूप में, जिसे अब हम बैकबोन के रूप में जानते हैं, एप्लिकेशन को सुसंगत कोड बेस में संरचित करने के लिए जिम्मेदार था। Underscore.js, बैकबोन की एकमात्र निर्भरता, DocumentCloud एप्लिकेशन का भी हिस्सा था।

रीढ़ डेवलपर्स जितना साथ उनके क्लाइंट साइड वेब एप्लिकेशन में कोई डेटा मॉडल प्रबंधन में मदद करता अनुशासन और संरचना के रूप में आप पारंपरिक सर्वर साइड आवेदन तर्क में मिलेगा।

Backbone.js का उपयोग करने के अतिरिक्त लाभ

  1. लाइब्रेरी के रूप में बैकबोन को देखें, रूपरेखा के रूप में नहीं
  2. जावास्क्रिप्ट अब एक संरचित तरीके से व्यवस्थित हो रहा है, (एमवीवीएम) मॉडल
  3. बड़े उपयोगकर्ता समुदाय

2

यह KVO के साथ नियंत्रकों और विचारों का उपयोग करके रूटिंग भी जोड़ता है। आप इसके साथ "AJAXy" एप्लिकेशन विकसित कर पाएंगे।

इसे एक हल्के स्प्राउटकोर या कैप्पुकिनो फ्रेमवर्क के रूप में देखें।


1

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


0

इतने अच्छे जवाब पहले से ही। बैकबोन js कोड को व्यवस्थित रखने में मदद करता है। मॉडल / संग्रह को बदलने से स्वचालितता प्रदान करने वाले दृश्य का ध्यान रखा जाता है जो विकास के बहुत सारे हिस्से को कम कर देता है।

भले ही यह विकास के लिए अधिकतम लचीलापन प्रदान करता है, डेवलपर्स को मॉडल को नष्ट करने और विचारों को ठीक से हटाने के लिए सावधान रहना चाहिए। अन्यथा आवेदन में स्मृति रिसाव हो सकता है।


-3

एक वेब अनुप्रयोग जिसमें कई AJAX अनुरोधों के साथ बहुत अधिक उपयोगकर्ता सहभागिता है, जिसे समय-समय पर बदलने की आवश्यकता होती है, और जो वास्तविक समय में चलता है (जैसे कि फेसबुक या स्टैकओवरफ़्लो) को बैकबोन.जेएस जैसे एमवीसी ढांचे का उपयोग करना चाहिए। यह अच्छा कोड बनाने का सबसे अच्छा तरीका है।

यदि एप्लिकेशन केवल छोटा है, तो Backbone.js ओवरकिल है, खासकर पहली बार उपयोगकर्ताओं के लिए।

बैकबोन आपको क्लाइंट साइड MVC देता है, और इसके द्वारा निहित सभी फायदे।


5
"चाहिए" रीढ़ का उपयोग करें? मैं स्टैकओवरफ़्लो या फ़ेसबुक, आपके दो उदाहरण, बैकबोन या अंडरस्कोर का उपयोग बिल्कुल नहीं देख सकता। क्या आपके पास उस दावे का संदर्भ है?
डेविड मीस्टर

बेशक कई अन्य एमवी * पुस्तकालय हैं, बैकबोन उनमें से एक है। आम तौर पर हालांकि, MVC कोड के बड़े टुकड़ों को विकसित करते समय चीजों को साफ-सुथरा रखने में मदद करता है।
19-11 को सुपर जुमरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.