Ember.js या Backbone.js के लिए आरामदायक बैकेंड [बंद]


98

मैं पहले से ही जानता हूं कि ember.js बैकबोन.जेएस के विपरीत एक अधिक भारी वजन दृष्टिकोण है। मैंने दोनों के बारे में बहुत सारे लेख पढ़े।

मैं अपने आप से पूछ रहा हूं कि कौन सी रूपरेखा एक रेल रेस्ट बैकेंड के लिए फ्रंटएंड के रूप में आसान काम करती है। Backbone.js के लिए, मैंने एक बैकएंड को कॉल करने के लिए अलग-अलग तरीकों को देखा। एम्बर के लिए ऐसा लगता है कि मुझे कुछ और पुस्तकालयों को शामिल करना होगा जैसे 'डेटा' या 'संसाधन'। इसके लिए दो पुस्तकालय क्यों हैं?

तो बेहतर विकल्प क्या है? बैकएंड के साथ फ्रंटेंड को जोड़ने के लिए बहुत सारे उदाहरण हैं। इस के लिए एक बैकएंड बाकी कॉल के लिए एक अच्छा काम करने वाला उदाहरण है:

URI: ../restapi/topics जीईटी क्रेडेंशियल प्राप्त करें: व्यवस्थापक / सुरक्षित प्रारूप: json


3
होगा एक सवाल है कि "रचनात्मक नहीं है" अभी तक उपयोगी, अच्छी तरह से सोचा जवाब अभी भी 240+ upvotes मिला है।
एंड्रयू

जवाबों:


257

लोकप्रिय राय के विपरीत Ember.js Backbone.js के लिए 'अधिक भारी वजन दृष्टिकोण' नहीं है। वे विभिन्न प्रकार के उपकरण हैं जो पूरी तरह से अलग-अलग उत्पादों को लक्षित करते हैं। एम्बर की मीठी जगह ऐसे अनुप्रयोग हैं जहां उपयोगकर्ता एप्लिकेशन को लंबे समय तक, शायद पूरे दिन खुला रखेगा, और अनुप्रयोग के विचारों या अंतर्निहित डेटा के साथ इंटरैक्शन दृश्य पदानुक्रम में गहरे बदलाव को ट्रिगर करेगा। एम्बर बैकबोन से बड़ा है, लेकिन इसके लिए धन्यवाद Expires, Cache-Controlयह केवल पहले लोड पर मायने रखता है। दो दिनों के दैनिक उपयोग के बाद अतिरिक्त 30k को डेटा ट्रांसफर द्वारा ओवरशेड किया जाएगा, यदि आपकी सामग्री में छवियां शामिल हैं।

बैकबोन उन राज्यों की एक छोटी संख्या वाले अनुप्रयोगों के लिए आदर्श है जहां दृश्य पदानुक्रम अपेक्षाकृत सपाट रहता है और जहां उपयोगकर्ता एप्लिकेशन को बार-बार या कम समय तक एक्सेस करने के लिए जाता है। बैकबोन का कोड छोटा और मधुर बना रहता है क्योंकि इससे यह अनुमान लगाया जाता है कि DOM का बैकिंग डेटा दूर हो जाएगा और दोनों आइटम मेमोरी एकत्रित हो जाएंगे: https://github.com/documentcloud/backbone/issues/23th#issuecomment-4452400 बैकबोन का छोटा आकार भी इसे संक्षिप्त इंटरैक्शन के लिए बेहतर बनाता है।

जिन ऐप्स को लोग दोनों चौखटे में लिखते हैं, वे इन उपयोगों को दर्शाते हैं: Ember.js ऐप्स में स्क्वायर के वेब डैशबोर्ड , Zendesk (कम से कम एजेंट / टिकटिंग इंटरफ़ेस), और Groupon का शेड्यूलर शामिल हैं : सभी एप्लिकेशन जो उपयोगकर्ता पूरे दिन काम करने में बिता सकते हैं।

बैकबोन एप्लिकेशन संक्षिप्त या आकस्मिक इंटरैक्शन पर अधिक ध्यान केंद्रित करते हैं, जो अक्सर एक बड़े स्थिर पृष्ठ के छोटे खंड होते हैं: एयरबीएनबी , खान अकादमी , फोरस्क्यू का नक्शा और सूचियां

आप उन एप्लिकेशन के प्रकार बनाने के लिए बैकबोन का उपयोग कर सकते हैं जो एम्बर लक्ष्य (जैसे Rdio ) द्वारा a) मेमोरी कोड या ज़ोंबी ईवेंट जैसी समस्याओं से बचने के लिए आपके द्वारा ज़िम्मेदार अनुप्रयोग कोड की मात्रा को बढ़ाते हैं (मैं व्यक्तिगत रूप से इस दृष्टिकोण की अनुशंसा नहीं करता हूं) या b) 3 पार्टी लाइब्रेरियों जैसे backbone.marionette या Coccyx को जोड़कर - इनमें से कई लाइब्रेरियाँ हैं जो सभी समान ओवरलैपिंग कार्यक्षमता प्रदान करने का प्रयास करती हैं और आप शायद अपने स्वयं के कस्टम फ्रेमवर्क को असेंबल करना चाहते हैं जो बड़ा है और आवश्यकता से अधिक गोंद कोड की आवश्यकता है यदि आप सिर्फ एम्बर का उपयोग करते हैं।

अंततः "जो उपयोग करना है" के प्रश्न के दो उत्तर हैं।

पहला, "मुझे अपने करियर में आम तौर पर किसका उपयोग करना चाहिए": दोनों, जैसे आप काम करने के लिए विशिष्ट कोई टूल सीखेंगे, जिसे आप भविष्य में करना चाहते हैं। आप कभी नहीं पूछेंगे "बैकबोन या डी 3?" "बैकबोन या एम्बर" एक समान रूप से मूर्खतापूर्ण प्रश्न है।

दूसरा, "मुझे अपनी अगली परियोजना पर, विशेष रूप से, जिसका उपयोग करना चाहिए": परियोजना पर निर्भर करता है। दोनों समान आसानी से रेल सर्वर के साथ संवाद करेंगे। यदि आपकी अगली परियोजना में सर्वर द्वारा उत्पन्न पेजों का मिश्रण शामिल है, जो जावास्क्रिप्ट द्वारा उपयोग किए गए तथाकथित "समृद्धि के द्वीप" हैं। यदि आपका अगला प्रोजेक्ट ब्राउज़र वातावरण में सभी इंटरैक्शन को धक्का देता है, तो एम्बर का उपयोग करें।


4
शानदार प्रतिक्रिया, ट्रेक। बस यहाँ टिप्पणी करना चाहता था Expiresऔर Cache-Controlलोगों की तुलना में बहुत कम मदद करता था - खासकर मोबाइल उपकरणों के संदर्भ में जो अक्सर उन्हें अनदेखा करते हैं। मुझे याद है कि आईओएस के एक संस्करण ने उन्हें पूरी तरह से नजरअंदाज कर दिया था (लेकिन अभी भी एचटीएमएल 5 कैश मेनिफेस्ट को सुनते हैं)। इसके अतिरिक्त ये हेडर मान किसी उपयोगकर्ता से पहली यात्रा के दौरान मदद नहीं करेंगे — जो आमतौर पर यह तय करने में सबसे महत्वपूर्ण है कि उपयोगकर्ता आपके ऐप का उपयोग करेगा या नहीं। यह कहते हुए कि 30kb फ़ाइल का अंतर मेरे लिए किसी सौदे का बड़ा नहीं लगता। क्या यह कच्चा या छोटा है और 30k का अंतर है?
मौविस लेडफोर्ड

11
यदि आप वास्तविक अनुप्रयोगों को देखते हैं जो शैली एम्बर बनाने में मदद करने के लिए हैं, तो आप पाएंगे कि उन pesky kbs से कोई बच नहीं रहा है। या तो वे एम्बर से आ रहे हैं और आपका एप्लिकेशन कोड छोटा है, या वे बैकबोन प्लग इन से आ रहे हैं, या वे उस कोड से आ रहे हैं जिसे आप स्वयं लिखते हैं। Wunderlist , जो आपको लगता है कि हस्तांतरण के लगभग 300kb पर "सरल" घड़ियों होगी। मुझे लगता है कि यह एम्बर के साथ समान आकार का होगा, शायद छोटा - कभी भी एक सटीक प्रतिलिपि नहीं लिखी जाएगी वंडरलिस्ट मैं 100% निश्चितता के साथ नहीं कह सकता।
ट्रेक ग्लोवेकी

1
मैं सहमत हूं, 178kb + टेम्पलेट्स में मेरी सबसे लोकप्रिय बैकबोन ऐप घड़ियों संकुचित और छोटा है। केवल यह बताते हुए कि हमें ब्राउज़र कैशिंग पर कैसे भरोसा नहीं करना चाहिए।
मौविस लेडफोर्ड

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

9
"आप बैकबोन या डी 3 को कभी नहीं पूछेंगे" - यकीन है, लेकिन मैं आसानी से एक परियोजना की कल्पना कर सकता हूं जहां मैं बैकबोन के साथ मिलकर डी 3 का उपयोग करूंगा। यह शायद एक परियोजना की कल्पना करने के लिए बहुत कठिन है जहां बैकबोन और एम्बर एक ही पृष्ठ पर एक साथ उपयोग किए जाते हैं। इसलिए, मुझे सवाल "बैकबोन या एम्बर" काफी उचित लगता है। यहाँ एक और पोस्ट मिली है जो मुझे काफी जानकारीपूर्ण लगी
शिप्राक

26

एक संक्षिप्त, सरलीकृत उत्तर देने के लिए: एक प्रतिष्ठित बैकएंड के लिए, इस समय, आपको बैकबोन का उपयोग करना चाहिए।

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

फिलहाल, एम्बर-डेटा (जो कि एम्बर के भीतर डिफ़ॉल्ट दृढ़ता तंत्र लगता है) उत्पादन के लिए तैयार है। इसका मतलब यह है कि यह काफी कुछ कीड़े है और, महत्वपूर्ण रूप से, नेस्टेड यूआरआई (/ पोस्ट / 2 / टिप्पणी / 4556 उदाहरण के लिए) का समर्थन नहीं करता है। यदि REST आपकी आवश्यकता है, तो आपको इस समय के लिए चारों ओर काम करना होगा यदि आप Ember चुनते हैं (यानी आपको या तो इसे हैक करना होगा, प्रतीक्षा करें, अपने आप को स्क्रैच से Ember-Data जैसे कुछ को कार्यान्वित करें, या उपयोग न करें -प्रतिष्ठा-मूलक यूआरआई)। एम्बर-डेटा कड़ाई से एम्बर का हिस्सा नहीं है, इसलिए यह पूरी तरह से संभव है।

आकार से अलग, दोनों के बीच मुख्य अंतर मूल रूप से हैं:

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

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

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


5
"महत्वपूर्ण रूप से, नेस्टेड यूआरआई (/ पोस्ट / 2 / टिप्पणी / 4556 उदाहरण के लिए) का समर्थन नहीं करता है" यहाँ एक सप्ताह पहले से प्रासंगिक है: github.com/emberjs/data/commit/… । यह जानता है कि यह तेजी से आगे बढ़ने, पूर्व-रिलीज ढांचे के साथ रखना मुश्किल हो सकता है, लेकिन हमें हमेशा अधिकार के साथ बोलने और सलाह देने के दौरान सटीकता का लक्ष्य रखना चाहिए!
ट्रेक ग्लोवेकी

धन्यवाद। मेरे उत्तर को अपडेट किया। मुझे लगता है कि पिछले सप्ताह या तो बड़े संबंध विलय में पेश किया गया था। मेरे पास सूचीबद्ध परिवर्तनों के माध्यम से एक नज़र थी और पढ़ी गई थी, लेकिन उन url का कोई उल्लेख नहीं मिला और मैं जिन मुद्दों पर नज़र रख रहा था, वे तब भी खुले थे जब मैंने उन्हें जाँचा था। कमिट को इंगित करने के लिए धन्यवाद - पहले से ही अपने अस्तित्व को जाने बिना यह पता लगाना मुश्किल हो सकता है।
२२:२२ बजे बेंगली

यह वास्तव में संबंध-सुधार शाखा के हालिया विलय से है। हम धीरे-धीरे पुराने मुद्दों पर चल रहे हैं और इस सप्ताह उन्हें बंद कर रहे हैं।
ट्रेक ग्लोवेकी

3

मुझे लगता है कि आपका प्रश्न जल्द ही अवरुद्ध हो जाएगा :) दोनों रूपरेखाओं के बीच कुछ संतोष हैं।

मूल रूप से बैकबोन बहुत सी चीजें नहीं करता है, और इसलिए मैं इसे प्यार करता हूं: आपको बहुत कोड करना होगा, लेकिन आप सही जगह पर कोड करेंगे। एम्बर बहुत सारी चीजें करता है, इसलिए आप बेहतर यह देखेंगे कि यह क्या कर रहा है।

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

आप इस पॉडकास्ट को भी सुन सकते हैं जहां जेरेमी एशकेन, बैकबोन के निर्माता, और एम्बर के सदस्य येहुदा काट्ज़ ने एक अच्छी चर्चा की है


2
धन्यवाद। आप ember के rets एक्सटेंशन के बारे में क्या कह सकते हैं। बेहतर उपयोग डेटा या संसाधन? क्या आप बाकी एपी कॉल का एक सरल उदाहरण दे सकते हैं?
रॉबिन वियरुच

1
संक्षिप्त उत्तर यह है कि पुस्तकालय हर समय भिन्न होते हैं और मैं आपको अपने पिछले अनुभव के आधार पर प्रतिक्रिया नहीं दे सकता (मैंने मूल्यांकन के लिए खुद पर किया था)। मुझे लगता है कि यह पोस्ट आपको मेरी तुलना में अधिक बताएगी: stackoverflow.com/questions/8623091/ember-js-rest-api
निकोलस ज़ोलोल

1
यह पोस्ट मैंने पहले ही देख ली थी। Thats क्यों मैंने पूछा :)
रॉबिन वियरुच

2
@ निकोलसज़ोज़ोल जो पॉडकास्ट है? संपर्क ?
deepak

3
फरवरी में पीछे से javascriptjabber.com/004-jsj-backbone-js-with-jeremy-ashkenas । इससे पहले कि यह स्पष्ट हो जाए कि ये ढांचे वास्तव में अतिव्यापी अखाड़े में मौजूद नहीं थे। आप येहुदा और जेरेमी को सिर्फ एक दूसरे से बात करते हुए सुन सकते हैं, वास्तव में कोई तुलना नहीं कर रहे हैं।
ट्रेक ग्लोवैकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.