एकल पृष्ठ अनुप्रयोगों के निर्माण के लिए जावास्क्रिप्ट चौखटे [बंद]


101

मेरा लक्ष्य एक मौजूदा वेब एप्लिकेशन को Restful सिंगल पेज एप्लिकेशन (SPA) में माइग्रेट करना है । वर्तमान में, मैं कई जावास्क्रिप्ट वेब एप्लिकेशन फ्रेमवर्क का मूल्यांकन कर रहा हूं।


मेरी आवश्यकताएं इस प्रकार हैं:

  • रेस्टफुल डेटा लेयर (जैसे एम्बर-डेटा)
  • एमवी * -structure
  • गतिशील मार्ग
  • परीक्षण-समर्थन
  • सम्मेलन द्वारा कोडिंग
  • एसईओ-समर्थन
  • ब्राउज़र इतिहास-समर्थन
  • अच्छा (एपीआई-) प्रलेखन
  • उत्पादन के लिए तैयार
  • जीवित समुदाय

रीड की हड्डी

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

अंगार

मैंने ember.jsआखिरी दिनों में देखा । दृष्टिकोण मुझे बहुत आशाजनक लगता है। लेकिन, दुर्भाग्य से, कोड लगभग दैनिक बदलता है। इसलिए, मैं इसे प्रोडक्शन-रेडी नहीं कहूंगा। और, दुर्भाग्य से, हम इसके 1.0 संस्करण के लिए इंतजार नहीं कर सकते। लेकिन मैं वास्तव में इस ढांचे के पीछे के विचार को पसंद करता हूं।

कोणीय

Angular.jsGoogle द्वारा बनाए रखा व्यापक रूप से फैला हुआ ढांचा है। लेकिन मैं कोणीय से परिचित नहीं हो सका। मेरे लिए, संरचना एक तरह से अस्पष्ट है, स्पष्टीकरण रूपरेखा के प्रत्येक भाग की समग्र जिम्मेदारियों से गायब हैं, और कार्यान्वयन सर्किटस महसूस करते हैं। बस इसे सीधे प्राप्त करने के लिए: यह सिर्फ मेरी व्यक्तिगत छाप है और लापता ज्ञान पर आधारित हो सकती है।

बैटमैन और उल्का

जैसा कि मैंने समझा, दोनों चौखटों के साथ-साथ सर्वर पार्ट की भी जरूरत है। और चूँकि हम केवल एक रैस्टफुल बैकएंड चाहते हैं - कोई भी भाषा, तकनीकी या सॉफ्टवेयर, यह वह नहीं है जो हम चाहते हैं। इसके अलावा, बैकएंड एपीआई पहले से मौजूद है (RoR)।

नॉकआउट , कैनजेएस और स्पाइन

मैं इन तीनों उम्मीदवारों में गहराई तक नहीं गया। शायद यह मेरा अगला कदम होगा।


तो मेरे सवाल अब:

  • क्या मुझे कोई अच्छा स्पा-फ्रेमवर्क याद आ रहा है?
  • आप किस रूपरेखा को सुझाएंगे / सुझाएंगे?
  • क्या आप किसी उल्लिखित ढांचे से बचेंगे?
  • बड़े एसपी अनुप्रयोगों में आपका अनुभव क्या है?

पुनश्च: मैं स्टीवन एंडरसन (नॉकआउट से मुख्य डेवलपर) से एक महान ब्लॉगपोस्ट की सिफारिश करना चाहूंगा (जेएस के सिंहासन के बारे में) -संवाद (2012 से) और सामान्य रूप से जावास्क्रिप्ट फ्रेमवर्क।

पुनश्च: हाँ, मुझे पता है कि एसओ पर पहले से ही कुछ सवाल हैं। लेकिन चूंकि एसपीएएस के लिए विकास इतनी तेजी से और तेज है, उनमें से ज्यादातर पहले से ही पुराने हैं।


नॉकआउट-आधारित एसपीए ढांचे की जांच करें मैं सिर्फ खुला-
खट्टा हूं

जवाबों:


81

मुझे हाल ही में एक परियोजना पर एक जावास्क्रिप्ट स्पा ढांचे पर भी फैसला करना था।

  • अंगार

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

  • रीड की हड्डी

    बैकबोन पहला ढांचा था जिसे हमने गंभीरता से देखा। मुझे यकीन नहीं है कि मैं समझता हूं कि आपको क्यों लगता है कि इसमें "अच्छी तरह से परिभाषित संरचनाएं" नहीं हैं? बैकबोन मॉडल और व्यू कोड को कैसे विभाजित करें, इसके बारे में बहुत स्पष्ट है। शायद आपका मतलब है कि किसी तरह का ऐप टेम्प्लेट नहीं है? वैसे भी, Backbone वास्तव में मॉडल / REST- बाध्यकारी भाग पर केंद्रित है, लेकिन वास्तव में दृश्य बाइंडिंग के लिए कुछ भी निर्धारित नहीं करता है। यदि आपके लिए मॉडल बाइंडिंग महत्वपूर्ण है और आप रेल का उपयोग कर रहे हैं तो ऐसा करने के लिए एक हवा होनी चाहिए। दुर्भाग्य से, मेरे ऐप के लिए वेब सेवाएँ वास्तव में मेल नहीं खाती थीं, और मुझे अपना .syncऔर .parseसब कुछ के लिए तरीके लिखने पड़े । मॉडल और व्यू कोड का पृथक्करण अच्छा था, लेकिन चूंकि हमें अपने सभी बाइंडिंग को खरोंच से लिखना होगा, इसलिए यह इसके लायक नहीं था।

  • नॉक आउट

    नॉकआउट यिन से बैकबोन के यांग की तरह है। जहां बैकबोन मॉडल पर केंद्रित है, नॉकआउट एमवीवीएम फ्रेमवर्क है और यह व्यू पर केंद्रित है। इसमें observableजावास्क्रिप्ट ऑब्जेक्ट गुणों के लिए रैपर हैं और data-bindगुण को अपने HTML में बाँधने के लिए एक विशेषता का उपयोग करता है । अंत में हम नॉकआउट के साथ गए क्योंकि दृश्य बंधन मुख्य रूप से हमारे ऐप के लिए आवश्यक था। (... प्लस अन्य, जैसा कि बाद में चर्चा की गई है ...) यदि आपको नॉकआउट की बाइंडिंग पसंद है और बैकबोन की मॉडल बाइंडिंग है तो नॉकबैक भी है जो दोनों रूपरेखाओं को जोड़ती है।

  • कोणीय

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

  • बैटमैन , उल्का , कैनजेएस , रीढ़

    वास्तव में इनमें से किसी पर भी बारीकी से नहीं देखा। हालांकि मुझे पता है कि स्पाइन स्पष्ट नियंत्रक वस्तुओं के साथ बैकबोन के समान फ्रेमवर्क है, और कॉफीस्क्रिप्ट में लिखा गया है।

  • अंतभाषण

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

    जावास्क्रिप्ट एप डेवलपमेंट रेल पारिस्थितिकी तंत्र की तुलना में जावा पारिस्थितिकी तंत्र की तरह अधिक है। रेल आपके द्वारा प्रत्येक एप्लिकेशन (रेल ढांचे) के लिए उपयोग किए जा रहे सामान का एक ठोस कोर प्रदान करता है, और समुदाय उस (रत्न) के शीर्ष पर बहुत सारे अनुकूलन प्रदान करता है। जावा ... एक भाषा प्रदान करता है। और फिर आप जावा ईई या स्प्रिंग या प्ले या स्ट्रट्स या टेपेस्ट्री चुन सकते हैं। और डेटाबेस से बात करने के लिए JDBC या हाइबरनेट या TopLink या Ibatis चुनें। और फिर आप इसे बनाने के लिए चींटी या मावेन या ग्रैडल का उपयोग कर सकते हैं। और इसे चलाने के लिए Tomcat या Jetty या JBoss या WebLogin का चयन करें। इसलिए इस बात पर अधिक जोर दिया जाता है कि आपको क्या जरूरत है और क्या उपयोग करने के लिए फ्रेमवर्क चुनने की तुलना में एक साथ काम करता है ।


आपके विस्तृत जवाब के लिए आपका बहुत-बहुत धन्यवाद। नॉकआउट के बारे में कुछ प्रश्न। प्रश्न: 1) क्या यह मॉडल को फ्रंट / बैकएंड में सिंक में रखने के लिए किसी प्रकार का डेटा-लेयर प्रदान करता है? 2) एक टेम्पलेट को दूसरे में शामिल करने का समर्थन कैसे किया जाता है (शायद आवश्यकता के साथ मिलकर)? 3) क्या सभी फ़ाइलों (मॉडल, विचार, नियंत्रक, सहायक आदि) को अलग-अलग और अलग-अलग फ़ोल्डरों में रखना आसान है? इन सवालों के अलावा मैंने आपके उत्तर को स्वीकार करने के लिए सेट कर दिया है, क्योंकि आपने बहुत सी जानकारी दी है।
क्रिस्टोफर

@ChristopherWill धन्यवाद! 1.) बैकबोन की तरह बहुत से आप इसे बाइंडिंग देखने के लिए छोड़ देते हैं, नॉकआउट इसे आपके लिए REST-> मॉडल बाइंडिंग के लिए छोड़ देता है। प्रलेखन में कुछ उदाहरण हैं - knockoutjs.com/documentation/json-data.html या आप Backbone के REST-> मॉडल आबादी को संयोजित करने के लिए KnockBack का उपयोग कर सकते हैं।
नैट

2.) यह इस बात पर निर्भर करता है कि आपका क्या मतलब है - नॉकआउट में एक अंतर्निहित डेटा बाइंडिंग है जो आपको मॉडल से एक संग्रह लेने देता है, एक सूची टैग या टेबल टैग से बांधता है और प्रत्येक के लिए एक निर्दिष्ट टेम्पलेट प्रदान करता है। बड़े पैमाने पर सामान के लिए, जैसे आप अपने समग्र विचारों को कैसे बनाते हैं और उन्हें स्वैप करते हैं - यह अभी भी कुछ हद तक मैनुअल है (कम से कम मैं यह कैसे कर रहा हूं, अभी भी सीख रहा हूं) - आवश्यकता है w / पाठ प्लगइन इसे करने के लिए थोड़ा आसान बनाता है, लेकिन आपको अभी भी तर्क को निर्दिष्ट करना होगा और divs को स्वैप करना होगा - मैं सिर्फ उन तरीकों से करता हूं जो मेरे मार्गों का जवाब देते हैं। आप ऐसा करने के लिए नॉकआउट घटनाओं को तार करने में सक्षम हो सकते हैं, हालांकि।
नट

3.) आवश्यकताएँ आप ऐसा करने की सुविधा देता है।
नट

धन्यवाद नैट मुझे लगता है कि मैं नॉकबैक को एक कोशिश दूंगा .. एक तरह का वादा करता हूं। और, निश्चित रूप से, आपके उल्लिखित पुस्तकालयों के साथ ही (आवश्यकता जेआरएस, चौराहे आदि)
क्रिस्टोफर विल

8

यह एक साल हो गया है जब हमने कई एसपीए के साथ हमारी क्लाउड सेवाओं की परियोजना पर विकास शुरू किया था, इसलिए यह एक बड़ा निर्णय था, जो कि हमारे RESTful वास्तुकला की जरूरतों को पूरा करने के लिए हमारे UI के लिए उपयोग करने के लिए जावास्क्रिप्ट फ्रेमवर्क था। और बहुत सारे शोधों के बाद हमने Dojo ढांचे का उपयोग किया ।

मुख्य विशेषताएं जो आपको पसंद आएंगी:

  1. शिक्षित समुदाय और एक टीम जो एक आदर्श डिजाइन पैटर्न के साथ आई थी। महान सम्मेलनों और मॉड्यूलर / वस्तु उन्मुख वास्तुकला। CrossBrowser प्रोग्रामिंग दृष्टिकोण के साथ :)
  2. एमवी * संरचना। बाहरी .htm टेम्प्लेट और उत्पादन के लिए UI विजेट बनाएं, अपने सभी जावास्क्रिप्ट और टेम्प्लेट को एक एकल, छोटा और छोटे। में बनाएँ।
  3. वंशानुक्रम के साथ कक्षाएं बनाएँ। संपत्ति बसने, फ़ंक्शन उपकरण का एक बहुत।
  4. पब / सब मैकेनिज्म (डोजो में नामित विषय)
  5. बहुत सारे यूआई नियंत्रण, सत्यापन फ़ॉर्म नियंत्रण, संवाद / टूलटिप्स से लेकर एक विशेष रुप से प्रदर्शित, अत्यधिक अनुकूलन योग्य (लेकिन हल्के) चार्ट और डेटा-ग्रिड समाधान।
  6. DOH नामक एक अच्छी इकाई परीक्षण प्रणाली। इसमें माउस / कीबोर्ड क्रियाओं को पुन: पेश करने के लिए एक रोबोट भी है।
  7. एक क्वेरी टूल (जैसे JQuery) ने सभी jquery सुविधाओं के साथ NodeList नाम दिया है और यहां तक ​​कि बहुत सारे प्लग इन भी हैं।
  8. और अच्छा है लेकिन इतना पूरा हिस्सा नहीं है। इसमें आपके REST सेवाओं के साथ उपयोग करने के लिए JsonRest मॉड्यूल है। इसका एक आसान उपकरण है लेकिन इसमें बहुत सारी विशेषताओं का अभाव है।

इन मुद्दों को दूर करने के लिए, हमने एक AJAX पोलर, एरर हैंडलिंग और यूनिवर्सल, लोडिंग और नोटिफिकेशन सॉल्यूशन विकसित किया। हमने इसे बहुत आसानी से डोजो फ्रेमवर्क सम्मेलनों और संरचनाओं का उपयोग किया। यदि आप ऐसा नहीं करना चाहते हैं, तो शायद आपको इस हिस्से के लिए किसी अन्य ढांचे का उपयोग करना होगा।

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


हैलो! क्या आप अब Dojo का उपयोग करते हैं? क्या आपके पास Dojo के बारे में ब्लॉग है?
दुनेवस्की मैक्सिम

नमस्ते! हां हम अभी भी उसी उत्पाद के लिए इसका उपयोग करते हैं और हम इसे बनाए रखते हैं। घर के बाहर के ढांचे को डोजो के ऊपर लिखा गया है, और हम इसे हर दिन जोड़ रहे हैं .. क्योंकि मेरे पास इसके लिए कोई ब्लॉग नहीं है। यदि आप इसके साथ शुरू करने जा रहे हैं तो यह आजकल एक पुराना उपकरण माना जाता है। वे अभी भी Dojo 2.0 पर काम कर रहे हैं, लेकिन अभी के लिए अन्य विकल्पों का उपयोग करना बेहतर हो सकता है। सूची के शीर्ष पर हमारे पास प्रतिक्रिया / कोणीय है।
यूनिकॉर्निस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.