2008-10-08 9 views
22

हम रूबी ऑन रेल फ्रेमवर्क (सीआरएम सिस्टम) का उपयोग करके काफी बड़े अनुप्रयोग विकसित कर रहे हैं और एक्स्टजेस का उपयोग करने के लिए इसे फिर से लिखने पर विचार कर रहे हैं ताकि रेल केवल डेटा हैंडलिंग कर सकें, जबकि एक्स्टजेएस डेस्कटॉप ब्राउज़र में सभी ब्राउजर हेवीलिफ्टिंग करेगा तौर तरीका।RoR के साथ एक बड़ी परियोजना पर ExtJS का उपयोग करने के खतरे?

किसी के पास कुछ अनुभव और संकेत हैं कि सबसे अच्छा तरीका क्या होगा? क्या एक्स्टजेस अपेक्षाकृत बड़े (और जटिल) अनुप्रयोगों में उपयोग करने के लिए पर्याप्त परिपक्व है? और रेल भाग के बारे में क्या - यहां सबसे अच्छा तरीका क्या होगा?

संपादित करें:

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

उत्तर

29

वर्तमान में मेरे पास ExtJS में लिखा गया एक बहुत बड़ा, डेस्कटॉप स्टाइल ऐप है। यह पर्ल के उत्प्रेरक एमवीसी ढांचे के शीर्ष पर दौड़ने के लिए प्रयोग किया जाता था, लेकिन एक बार जब संपूर्ण व्यू परत को एक्स्टजेस आधारित डेस्कटॉप में परिवर्तित कर दिया गया तो मैंने रेल मॉडल और नियंत्रकों पर रूबी में माइग्रेट करना शुरू कर दिया। यह उतना तेज़ है जितना तेज़ नहीं है, और बनाए रखना आसान है और इसमें बहुत छोटा कोड बेस है।

  • , सुनिश्चित करें कि आप अपने सक्रिय रिकॉर्ड config सेट कि json में मॉडल की जड़ नाम शामिल नहीं करने के लिए बनाएं, ताकि Ext के JsonStore रिकॉर्ड पढ़ने कोई समस्या नहीं है। ActiveRecord BASE पर एक विकल्प है जिसे include_root_in_json कहा जाता है जिसे आपको गलत पर सेट करना होगा।

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

  • शायद पृष्ठ लोड होने के समय आप JSON प्रारूप में सर्वर पर डेटा के लिए सर्वर पर डेटा के लिए कुछ प्रकार की कैशिंग विधि चाहते हैं। यह अजाक्स के माध्यम से गोल यात्राओं की संख्या में कटौती करेगा।

  • निश्चित रूप से Ext के WindowManager और StoreManager वस्तुओं का इस्तेमाल करते हैं, या Ext.util.MixedCollection

  • से अलग, प्रबंधनीय फाइलों में अपने कोड का विकास अपने स्वयं के रोल है, तो एक निर्माण प्रक्रिया जो उन्हें एक ही में संयोजित करता है फ़ाइल, और उसके बाद फ़ाइल को संपीड़ित/obfuscate करने के लिए YUI के कंप्रेसर या डीन एडवर्ड्स पैकर चलाएं। सभी जेएस और सीएसएस को अपनी स्वयं की एकल फाइलों में सेव करें, जिसमें एक्सटी आपूर्ति किए गए हैं।

+2

+1। यह सभी भारी जेएस ऐप्स के लिए जरूरी है। – dmackerman

1

एक्स निश्चित रूप से इस स्थिति को संभालने के लिए पर्याप्त परिपक्व है। मैं फिलहाल एक बहुत सारे एक्स्ट के साथ एक रेल परियोजना पर काम कर रहा हूं, और सबसे कठिन हिस्सा निश्चित रूप से रेल के to_json के साथ काम कर रहा है ताकि जेएसओएन प्रस्तुत किया जा सके (एरे, हेश, मॉडल, जो विफलता में असफलता आदि के लिए)

रेल के लिए ext_ scaffold प्लगइन देखें। मैंने इसके साथ शुरुआत की और अपने ActiveRecord/ActionView एक्सटेंशन पर हैक किया जब तक कि ऐसा करने के लिए मुझे इसकी आवश्यकता नहीं थी।

1

मुझे रेल के साथ ExtJS का उपयोग करके कुछ अनुभव है। ढांचे का उपयोग करना कुछ अच्छे दिखने वाले विजेट मुफ्त में प्राप्त करने का एक शानदार तरीका है। यदि आप एकल पृष्ठ अनुप्रयोगों को विकसित करने के लिए इसका उपयोग करते हैं तो आरईएसटी सम्मेलन ढांचे के साथ भी अच्छी तरह से बैठना चाहिए। आरजेएस के साथ भी अच्छी तरह से काम करता है। पुन: लोड एक ही पृष्ठ आवेदन मूर्खतापूर्ण है के बाद से: [नोटिस]

यहाँ ढांचे

  1. का उपयोग कर आप वास्तव में की फ्लैश उपयोग नहीं कर पाएंगे साथ मेरी शिकंजा हैं। यह प्रमाणीकरण नोटिस और संदेश को गड़बड़ कर देता है क्योंकि आपको उन्हें दिखाने के लिए आरजेएस/जावास्क्रिप्ट विधियों का उपयोग करना होगा।

  2. आप एआरबी का अधिक उपयोग नहीं कर सकते हैं इस प्रकार आपको जेसन कॉलबैक में बहुत सारे तर्क को समाहित करना होगा।

+0

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

14

[2012 अद्यतन] ExtJS Sencha, who offer a GPLv3 license, और दो वाणिज्यिक लाइसेंस द्वारा अधिग्रहण कर लिया था।

[2008-अक्टूबर टिप्पणी] ExtJS तकनीकी योग्यताओं पर बहुत अच्छा है, लेकिन कई महीनों पहले लाइसेंसिंग के साथ झगड़ा ने मुझे अन्य ढांचे को देखने का नेतृत्व किया है - मुझे अब एक्स्टजेस के रचनाकारों पर भरोसा नहीं है। मुझे यह पसंद नहीं है कि उन्होंने अपने लाइसेंस को कैसे कहा, और उन्होंने ओपन सोर्स वकालत करने का नाटक कैसे किया, जबकि स्पष्ट रूप से उन लोगों से अन्यायपूर्ण तरीके से लाभ उठाने का प्रयास किया जो उन्हें विश्वास करते थे।

मैं केवल नैतिक आधार पर ExtJS का उपयोग करने के खिलाफ हूं।

+1

यह बिल्कुल मेरी चिंता भी है। ओपनसोर्स परियोजनाओं के अलावा भी वाणिज्यिक लाइसेंस सिर्फ पागल है। टेड ड्रिस्कॉल (सेनेचा में बिक्री वीपी) के साथ मेरी बातचीत देखें और आपको पता चलेगा कि मैं किस बारे में बात कर रहा हूं। http://padcom13.blogspot.com/2011/03/ext-js-licensing-be-extra-careful.html –

+0

उस समय वही चिंता है, लेकिन अब सेन्चा एक्स्टजेस के लिए एक जीपीएलवी 3 लाइसेंस भी प्रदान करता है। - http://www.sencha.com/products/extjs/license/ –

4

मैंने आपके द्वारा वर्णित प्रकार के एक बड़े RoR/ExtJS ऐप को सफलतापूर्वक तैनात किया है ("सिंगल-पेज" क्लाइंट-साइड AJAX संचालित)। Ext_scaffold काफी लाल-हेरिंग है।

RoR और ExtJS को आसानी से मिलकर काम करने के लिए यह बहुत कर नहीं है। मौलिक विकल्प यह है कि एक्स्टजेस को "रेल बोलने" के लिए विस्तारित करना है, पीओआर आरओआर को "एक्स्टजेस बोलने" के लिए, या बीच में मिलना है। यह निर्भर करेगा कि आपकी टीम के कौशल कहां हैं।

मैं अपनाया मिलने-इन-द-मिडल रणनीति, जिसमें शामिल है:

  • बढ़ाएँ Ext.data.Store और Ext.data.Record मार्ग सम्मेलनों रेल के बारे में पता होना करने के लिए
  • हैक Ext.grid.EditorPanel और Ext.form.BasicForm ActiveRecord संघों
  • साथ अच्छी तरह से खेलने के लिए
  • कुछ मॉड्यूल लिखें ActiveRecord::Base विस्तार करने के लिए और ApplicationController बस Ext.grid.EditorPanel और Ext.form.BasicForm
  • से प्रतिबद्ध करने के लिए 0

यह बहुत अधिक है।

ऐसा कहकर, एक्स्टजेस में कमी आई है।

  • आपको आंतरिक हाथों में अपने हाथों को गंदे करना होगा। डेमो द्वारा बेवकूफ मत बनो।
  • समुदाय दस्तावेज खराब और PHP केंद्रित है।
  • वीबुलेटिन का उपयोग करते हुए गीथूब/लाइटहाउस-केंद्रित आरओआर दुनिया से आ रहा है, 1 99 8 में जागने जैसा है। मेरा मतलब है कि कोई सार्वजनिक बगट्रैकर सिर्फ एक फोरम पोस्ट अपडेट नहीं किया गया है (डब्ल्यूटीएफ?)।
  • कोड थोड़ा अधिक इंजीनियर है।
  • टीम ने ओपन सोर्स विश्वसनीयता खो दी है ताकि वे ओपन सोर्स ऑक्सीजन खो चुके हैं।
  • टीम जीडब्ल्यूटी के साथ केंद्रित एकीकरण प्रतीत होता है (क्या कोई भी "enterpri $ ey" कह सकता है?)।
+0

हां, एक्सटी का कोडबेस भारी है और हम उस तरफ कुछ गंदे काम की उम्मीद कर रहे हैं (हालांकि हमारे जेएस कौशल हमारे सर्वर साइड कौशल के पीछे हैं) और आरओआर/एआर भाग पर कुछ नलसाजी भी। क्या आपके पास दोनों पक्षों में किए गए परिवर्तनों के बारे में अधिक विशिष्टता साझा करने का कोई मौका है? फिर भी धन्यवाद! –

0

जब मैं ("Practical Rails Projects" पुस्तक में के बारे में पढ़ के अलावा) ExtJS का कोई अनुभव नहीं है मैं एक डेस्कटॉप की अनुभूति अधिकतम लाभ लेने के jrails के साथ एक jQuery Flexigrid इस्तेमाल किया।

यह बहुत अच्छी तरह से काम किया।

1

मैंने कई अनुप्रयोगों के लिए एक्स्टजेस और रेल तैनात किए हैं और उन्हें निश्चित रूप से एक-दूसरे से बात करने के लिए बनाया जा सकता है। हमने एक ऐप का एक त्वरित डेमो रखा है जिसे हम वर्तमान में रेल + + में http://demo.domine.co.uk/admin पर विकसित कर रहे हैं। अब के लिए सामने के छोर पर ध्यान न दें, क्योंकि यह पूरा नहीं हुआ है - व्यवस्थापक अनुभाग अनिवार्य रूप से समाप्त हो गया है और उसे अपने साथ में लॉग इन कर सकते हैं:

उपयोगकर्ता नाम: एडवर्ड पासवर्ड: rarrar

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

प्रारंभ मेनू पर प्रत्येक एप्लिकेशन जेएसओएन के माध्यम से रेल बैकएंड के साथ बातचीत कर रहा है। मैंने वहां हमारे लिए अधिकांश काम करने के लिए एक मूल रेल प्लगइन लिखा है। मैं जल्द ही उस कोड को जारी कर दूंगा लेकिन अब उम्मीद के लिए यह कुछ विचार देता है कि ये दोनों तकनीकें कितनी अच्छी तरह से काम कर सकती हैं ...

+0

हाय एड, उत्तर देने के लिए धन्यवाद। मैंने गितूब पर आपके कुछ प्रयासों को देखा है, लेकिन ईमानदार होने के लिए, मैं अभी तक अपने सिर को पाने में कामयाब नहीं रहा हूं। डेबो एप्लिकेशन अभी काम नहीं कर रहा है (एफबीयू कहते हैं, "एसपी अनिर्धारित है)। क्या आपको अपने कोड की रिलीज तिथि के बारे में कोई अंदाजा लगा है? फिर से धन्यवाद। –

5

यह मेरे पिछले जवाब को मिलान की इस टिप्पणी के जवाब में अंतर्गत आता है, लेकिन एक नवागंतुक यहाँ के रूप में मैं वहाँ जवाब देने के लिए पर्याप्त प्रतिष्ठा अंक नहीं हैं:

वहाँ के साथ एक समस्या थी "sp अपरिभाषित है" है, जो एक बड़ी फ़ाइल में जावास्क्रिप्ट फ़ाइलों की रेल की कैशिंग का नतीजा था (अन्यथा कई सौ फाइलें होंगी)। कैशिंग ने कुछ अजीब बगों को न्यूलाइन के साथ पेश किया जिसने पूरी चीज को फेंक दिया। यह मुझे थोड़ी देर के लिए अपने बालों को खींच रहा था, लेकिन समाधान रूबी को 1.8.6 (पैच स्तर 72) से नवीनतम 1.8.7 तक अपडेट करना था। इससे समस्या ठीक हो गई है, इसलिए यदि आप एक नज़र रखना चाहते हैं तो कृपया इसे दोबारा जांचें (आपको संपत्ति कैशिंग को हरा करने के लिए एक पूर्ण ताज़ा करने की आवश्यकता होगी)।

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

मैं वर्तमान में उचित 'रिलीज' के लिए तैयार होने से पहले कुछ प्रमुख वर्गों को पुन: सक्रिय करने की प्रक्रिया में हूं। जब यह तैयार हो (मैं कुछ हफ्तों के बारे में सोच रहा हूं), मैं प्रलेखन उत्पन्न करूंगा और कुछ डेमो और उदाहरण कोड के साथ एक त्वरित साइट स्थापित करूंगा। जब मैंने ऐसा किया है तो मैं अपने ब्लॉग पर एक पोस्ट डालूंगा (http://edspencer.net)।

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

+0

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

+0

ओह, मैं भूल गया - आपका ऐप अब काम कर रहा है। उम्मीद तो दिखती है! –

+0

हाय मिलान, निश्चित रूप से, मैं अगले कुछ हफ्तों में इस ब्लॉग को अपने ब्लॉग पर एक साथ रखने के बारे में एक पूर्ण अवलोकन पोस्ट कर रहा हूं। हम इस समय लंदन जाने की प्रक्रिया में हैं इसलिए चीजें थोड़ा व्यस्त हैं! http://edspencer.net देखें - यही वह जगह है जहां मैं कोई अपडेट चिपकता हूं। 'अलग और गठबंधन' निर्माण प्रक्रिया के लिए –

0

ठीक है। मैं कई परियोजनाओं पर extjs gxt gwt का उपयोग करता हूं, और यह विकास के लिए बहुत आसान है।लेकिन मैं आपको बताना चाहता हूं कि मैंने अपनी परियोजना को extjs + gwt (gxt) के साथ बनाया है, मुझे रूबी के बारे में निश्चित नहीं है। link text

4

आप Netzke ढांचा सिर्फ इतना है कि ऐसा करने के लिए माना जाता है कि इस पर एक नज़र है करने के लिए चाहते हो सकता है: मॉड्यूलर दृष्टिकोण पर जोर देने के साथ जटिल एक पृष्ठ वेब आवेदन बनाने की सुविधा।

Netzke के लाभ हैं:

  • Reusability और कोड की तानाना। एक बार जब आप अपना घटक (क्लाइंट और सर्वर दोनों पक्ष) बनाते हैं, तो आप इसे किसी भी स्थान पर पुन: उपयोग कर सकते हैं, अन्य घटकों के साथ गठबंधन कर सकते हैं, या घटना इसे विरासत के साथ बढ़ा सकते हैं।

  • क्षमता। प्रत्येक घटक के लिए कक्षा केवल एक बार सर्वर (और मूल्यांकन) से लोड की जाती है, जो सर्वर-क्लाइंट संचार पर बहुत समय बचाती है।

  • यह खुला स्रोत है, और यह सक्रिय विकास में है। इसमें लाइव डेमो और उदाहरण कोड है।

  • यह एक जटिल रसद आवेदन के वास्तविक जीवन के विकास के लिए पहले से बनाए गए घटक है कि आप के बिना भी छू Ext जे एस सीधे उपयोग कर सकते हैं (सिर्फ रेल में उन्हें कॉन्फ़िगर)

  • यह (इसके लेखक द्वारा) का इस्तेमाल किया गया है है । Netzke की

नुकसान कर रहे हैं:

  • कोड अभी भी जवान है, और समुदाय के छोटे।

आप रुचि रखते हैं, वर्णन और डिजाइन जानकारी यहां पर एक नजर है: https://github.com/nomadcoder/netzke-core

लाइव डेमो/ट्यूटोरियल यहाँ पाया जा सकता है: http://netzke-demo.herokuapp.com और यहाँ: http://yanit.heroku.com

+0

डेमो एक सीआरएम या परियोजना प्रबंधन प्रणाली के लिए ठंडा और बहुत उपयुक्त दिखता है (जिनमें से अधिकांश पुरातन पृष्ठ उन्मुख डिजाइनों का उपयोग करते हैं) - http://superuser.com/questions/380146/open-source-collaborative-project-management-and -crm-सॉफ्टवेयर के साथ-api –

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