एंगुलरजेएस दो-तरफा डाटाबेसिंग प्रदान करता है।AngularJS में दो-तरफा डाटाबेसिंग क्यों एक एंटीपाटरन है?
मैंने कई एंगुलरजेएस ऐप्स बनाए और एक शक्तिशाली फीचर होने के लिए दो-तरफा डाटाबेसिंग पाया, जिससे मेरी उत्पादकता में वृद्धि हुई।
हाल ही में हालांकि मैं पोस्ट और लेखों में अधिक से अधिक आते हैं जो दावा करते हैं कि दो-तरफा डाटाबेसिंग एक एंटीपाटर है।
उदाहरण:
- https://medium.com/este-js-framework/whats-wrong-with-angular-js-97b0a787f903#.py84tbylf
- https://www.dotnetrocks.com/?show=1147
- https://www.youtube.com/watch?v=DslsyqnyjQE
- Angular2 two-way data binding
संसाधनों में से अधिकांश की "यूनिडायरेक्शनल Dataflow" पक्ष में तर्क है कि यह प्रतिक्रिया द्वारा/बढ़ावा दिया जाता है फ्लक्स।
इसके अलावाकुछ समय है कि वहाँ कोई दो तरह से बाध्यकारी होगा के लिए Angular2 announced ... लेकिन ताज़ा दस्तावेज़ों से पता चलता है कि यह वास्तव फिर two-way databinding via ngModel पेशकश कर रहा है (के शीर्ष पर लागू किया property- और घटना बाध्यकारी)
हालांकि मैं अभी तक AngularJS में दो-तरफा डेटाबेस से संबंधित समस्याओं को पूरी तरह से समझ नहीं पा रहा हूं।
अन्य ग्राहक प्रौद्योगिकियों (यानी झूले, ग्रहण-आरसीपी, WinForms, WPF ...) भी दो तरह से डेटा बाइंडिंग प्रस्तुत करते हैं, और मैं दावा है कि यह एक विरोधी पैटर्न है से अधिक कभी नहीं ठोकर खाई ...
क्या कोई कैननिकल उदाहरण है जो आसानी से उन समस्याओं को दिखाता है जो AngularJS में दो-तरफा डेटाबेस से हो सकते हैं?
The video मैं ऊपर लिंक संकेत है कि $scope.watch
समस्या है लगता है ... लेकिन उदाहरण $scope
पर सामने आ रहा एक समारोह से जुड़ कर $scope.watch
बिना लागू किया जा सकता।
यदि आप $scope
(यानी controller as
का उपयोग कर) से बचने से बचते हैं, तो दो-तरफा डाटाबेसिंग के साथ कौन सी समस्याएं रहती हैं?
दो तरफा बाध्यकारी वाली चीज यह है कि यह हर बार ट्रिगर होने पर घटनाओं के एक कैस्केड की आग लगती है। यह संभावित रूप से उन सबसे सरल कार्यों पर ओवरहेड का कारण बन सकता है जिनके बारे में ट्रैक रखा जा रहा है। हालांकि यह सीधे एक बुरी बात नहीं है, यह किसी भी डिजाइन में स्वाभाविक रूप से कमजोरी है। जब तक आप बिल्कुल नहीं जानते कि आप क्या कर रहे हैं, तो सुस्त कोड बनाना बहुत आसान है। एंगुलरजेएस इस डिजाइन के निर्णय के साथ कुश्ती कर रहा है क्योंकि यह शुरुआत है और यह एक कारण है कि कोणीय 2 को अलग तरीके से स्थापित किया गया था। रिएक्ट और नॉकऑट जैसे फ्रेमवर्क डिजाइन द्वारा monodirectional हैं। – MartijnK
@MartijnK आपकी टिप्पणी के लिए धन्यवाद। आपका तर्क मूल रूप से समझा रहा है कि दो-तरफा डाटाबेसिंग को कोणीय जेएस में खराब रूप से लागू किया गया है ... क्या वास्तव में यह कारण है कि दो-तरफा डाटाबेसिंग की "अवधारणा" एक एंटीपाटरन है? नॉकआउट दो-तरफा डाटाबेसिंग भी प्रदान करता है ... इसलिए नॉकआउट को ढांचे के रूप में उपयोग करते समय यह विरोधी पैटर्न नहीं है? – jbandi
मुझे लगता है कि कोई भी जो दो-तरफा बाध्यकारी विरोधी पैटर्न कहता है, यह तर्क देगा कि यह इंजीनियर प्रदर्शन, रखरखाव और स्केलेबिलिटी के खर्च पर कुछ समय और प्रयास को आगे बढ़ाता है। कोणीय 1.x के मामले में, प्रत्येक पाचन चक्र गंदे चेक और कॉलबैक की एक श्रृंखला को ट्रिगर करता है जो जल्दी से हाथ से बाहर निकल सकता है अगर आपको समझ में नहीं आता कि कैसे और क्यों जोड़े जोड़े जाते हैं। यह कहने के लिए कि यह एक विरोधी पैटर्न है एक कठोर आलोचना IMHO है, लेकिन मैं देख सकता हूं कि क्यों कुछ लोग इसे नापसंद करते हैं। –