आप वास्तव में एक से अधिक प्रश्न पूछ रहे हैं। मैं वर्तमान में हमारी कंपनी के लिए "किस ढांचे का उपयोग करना चाहिए" प्रश्न का विश्लेषण कर रहा हूं। यह आपके विचार से बहुत अधिक है। नीचे मेरे पास अब तक है, और जैसा कि मुझे अधिक जानकारी मिलती है, मैं इस आइटम को अपडेट करने का प्रयास करूंगा।
इस बीच में ...
वास्तु पैटर्न का सवाल पुस्तकालयों या चौखटे से अलग है।
ARCHITECTURAL DESIGN PATTERNS कई कारणों से उपयोगी हैं। आपके मॉड्यूल में ढीले युग्मन को प्राप्त करने का एक कारण होगा। ढीले युग्मन को प्राप्त करने का एक शानदार उदाहरण Mediator Pattern में पाया जाता है।
जो ढांचे का उपयोग करने के लिए का सवाल है कई निर्णय अंक:
स्पीड टेस्ट:
ये हैं क्या मैं विचार करें चौखटे:
मैं करने के लिए अपने रूपरेखा विकल्प को सीमित करने का फैसला किया है:
- Dojo: टूलकिट, डेस्कटॉप, मोबिल, ग्राफिक्स & Vectoring
- YUI: डेवलपर उपकरण, बुनियादी ढांचे, उपयोगिताएँ, विजेट्स, गैलरी , प्रोजेक्ट्स
- jQuery: कोर, यूआई, मोबिल, प्लगइन्स, ग्राफिंग, विजुअलाइजेशन
लेकिन ... JavaScript लाइब्रेरी के टूटने भी जरूरी है:
MVC सबसे अधिक इस्तेमाल किया सामने के अंत पैटर्न है। हालांकि, यहां मेरे नोट अभी तक पूर्ण नहीं हैं। यहां तक कि मुझे ऊपर सूचीबद्ध वस्तुओं पर उपयोग आंकड़े खोजने में परेशानी हो रही है।
Backbone.js (MVC)
बाकी डेटा लेने वाली की ओर अधिक बनाया गया है। बैकबोन की अपनी इवेंट सिस्टम है, और इस प्रकार, jQuery कार्यक्षमता के साथ प्रतिस्पर्धा करता है।
Spine.js (MVC)
JavaScriptMVC (MVC)
MVC एकीकृत विकास उपकरण; jQuery के साथ प्रयोग किया जाता है; अत्यधिक मॉड्यूलरकृत। अभी तक सुनिश्चित नहीं है कि इसे आसानी से पुस्तकालय माना जा सकता है या नहीं ... लेकिन पिताजी की तरह!
AngularJS (एमवीसी)
चिंताओं, ढीले युग्मन और नियंत्रण में उलझन का पृथक्करण। दो-तरफा databinding
SproutCore (MVC)
YUILibrary (MVC)
यह वास्तव में समग्र YUI ढांचे का हिस्सा है ... लेकिन मूल source article में सूचीबद्ध किया गया।
Broke.js (MVC)
प्रलेखन वर्तमान में गरीब है।
Fidel.js (MVC)
Sammy.js (MVC)
बाकी डेटा लेने वाली की ओर अधिक बनाया गया है।
KnockoutJS (MVVM)
प्रश्न:
- क्यों वहाँ बहुत कुछ एकमुश्त MVVM कार्यान्वयन कर रहे हैं?
- क्या दो-तरफा एमवीवीएम के समान ही बाध्यकारी है?
- यदि हां, तो इनमें से कुछ पुस्तकालय (जो दो-तरफा बाध्यकारी करते हैं) खुद को एमवीसी मानते हैं?
मॉड्यूलर JavaScript:AMD, CommonJSऔर वादे-आधारित कार्यान्वयन:
मैं अभी भी इस क्षेत्र की रूपरेखा कर रहा हूँ। हालांकि, नीचे कुछ ऐसे क्षेत्र हैं जिन्हें मैं प्रेरणा के लिए उपयोग कर रहा हूं।
प्रश्न:
- वहाँ विभिन्न एएमडी के 'जायके' कर रहे हैं (विभिन्न लेख हाँ कहने लगते हैं)?
- 'वादे-आधारित' का क्या अर्थ है?
बनाने विजेट्स & प्लगइन्स:
एक बार जब आप तय एएमडी का जो स्वाद पर अपने मॉड्यूल आप वास्तव में कुछ writting शुरू कर सकते हैं का उपयोग करना चाहिए।
प्रश्न:
- एक प्लगइन और एक विजेट के बीच क्या अंतर है?
सामान्य नोट:
मैं कैसे अपने चौखटे में से प्रत्येक के विभिन्न मॉड्यूल को लागू पर रखने का सुझाव देते हैं। कुछ पूरा करने के लिए जो कोड लगता है उसे देखें। क्या यह सही लगता है? क्या यह घबराहट महसूस करता है?
मेरी प्रारंभिक भावना:
प्रवृत्तियों उपयोग, गति और समुदाय के समर्थन के लिए विकल्पों की विशालता को देखते हुए ... jQuery तरह से आगे है।
लक्ष्य:
अंतिम लक्ष्य एक रूपरेखा, किसी भी/सभी पुस्तकालयों का चयन और लदान और शिथिल युग्मित जावास्क्रिप्ट मॉड्यूल बनाने के लिए एक सामान्य दृष्टिकोण को परिभाषित करने के लिए है।
जोखिम से बढ़ाता लागत:
Quantiying एकमुश्त खर्च कठिन है, लेकिन तुम समझा-दूर कर सकते हैं जोखिम। आपके अंतिम हित में, आपको ऊपर सूचीबद्ध रुझानों को भी ध्यान में रखना चाहिए। लेकिन सामान्य रूप में, मैं शिथिल तोड़-अप होता लागत 3 क्षेत्रों है कि जोखिम को परिभाषित में:
- परिचित: अपनी टीम अब साथ सबसे परिचित क्या है?
- रैंपिंग: प्रत्येक ढांचे और पुस्तकालय पर "रैंप-अप" प्राप्त करने के लिए कितना अतिरिक्त प्रयास किया जाएगा?
- लाइसेंसिंग: क्या यहां कोई स्नैग हैं?
जोखिम: एक बार का आकलन किया है, तो आप हक व्याख्या कर सकते हैं क्यों आप कम, मध्यम या उच्च के रूप में एक ही विकल्प रैंक हो सकता है।
@ErezCohen
हम एक ASP.NET की दुकान है, इसलिए हम अपने शोकहारा बैकएंड के लिए वेब एपीआई का उपयोग करें। और चूंकि घटक-शैली जावास्क्रिप्ट विकास भविष्य है, इसलिए हमने अपने सभी पृष्ठों पर मानक बेसलाइन के रूप में jQuery & RequJS का उपयोग करना चुना है। इसके अतिरिक्त, हम अपने नियंत्रकों में Deferreds का भारी उपयोग करते हैं।
क्लाइंट-साइड एमवीसी के लिए, उल्लेख किए गए "ढांचे" में से कई अन्य किसी भी चीज़ की तुलना में अधिक fads हैं (और कई उपयोग में आ गए हैं)। इसके अतिरिक्त, एमवीसी/एमवीवीएम क्षमताओं को एक-ऑफ एड-ऑन के रूप में मानने के लिए और अधिक समझदारी हुई जब मानक मानक के बजाए निर्धारित किए गए थे। और, स्पष्ट रूप से, चूंकि हम अजाक्स कॉल को आसान बनाने के लिए पाते हैं, इसलिए सरल डेटा-बाइंडिंग करने के लिए विशाल ढांचे में चमकदार लग रहा था (केवल वास्तविक लाभ कुछ जटिल मामलों के लिए दो-तरफा बाध्यकारी है)। इसके अलावा, इस बारे में सोचें कि इन ढांचे में से कुछ को कम करने के लिए कितना दर्द होगा जब वे अब लोकप्रिय नहीं होंगे।
बेशक, हमारे पास अपनी खुद की प्रतिभा है ... आप नहीं कर सकते हैं। यदि आपका चालक दल जावास्क्रिप्ट के साथ बहुत अच्छा नहीं है, तो कोणीय का प्रयास करें क्योंकि इसे "डिजाइनर" के लिए प्रोग्रामर नहीं बनाया गया था। वैकल्पिक रूप से, यदि आपकी टीम रोलिंग करने में सक्षम है और स्वयं को नियंत्रकों के लिए ढांचा चाहता है तो jQuery विजेट फैक्टरी उपयोगी है। हालांकि, आपके नियंत्रकों के लिए मॉड्यूल पैटर्न का सरल उपयोग भी ठीक है (यही वह है जो हम करते हैं)। और ... यह बहुत अच्छा काम करता है ... और बहुत साफ है।
मुझे यह जानकर उत्सुकता है कि आपने क्या चुना है। + क्या आपने केंडो को भी माना है? –
हां, हम आज केंडो नियंत्रणों का उपयोग करते हैं। केंडो एमवीसी के साथ समस्या अपने नियंत्रण सेट के लिए भारी युग्मन है ... आप केंडो पर निर्भर हैं। आप एक केंडो की दुकान बन जाते हैं। इसके अलावा, आजकल, नियंत्रणों का कोई भी सेट आपको कभी भी आपकी सभी क्षमताओं को प्रदान नहीं करेगा। केंडो कुछ चीजों में महान है और दूसरों पर भयानक है। इस बीच, सिंकफ्यूजन या आरजीआरएफ जैसे अन्य नियंत्रण पुस्तकालयों में कमी है जहां केंडो महान है। अंत में, आपको अनुभव आवश्यकताओं को निर्देशित करने के लिए कई टूलसेट का उपयोग करना होगा। और, चूंकि केंडो एमवीसी इतने भारी रूप से केंडो नियंत्रणों के साथ मिलकर है ... हम केंडो के उस हिस्से का उपयोग नहीं करते हैं। –