2011-02-24 27 views
40

क्या कोई RxJs और Knockout के बीच अंतर को जानता है? सतह पर मेरे लिए एक घटना संचालित यूआई बनाने के लिए, वे एक ही समस्या को हल करने की कोशिश कर रहे हैं। लेकिन जिसने दोनों के साथ अनुभव किया है, वे अलग-अलग कैसे होते हैं/वे समान कैसे होते हैं? क्या आप मुझे चुनने में मदद करने के लिए उनके बारे में कुछ बता सकते हैं?Knockout.js और Rx.js के बीच क्या अंतर है?

उत्तर

56

स्टीव (नॉकआउट के निर्माता) explained the difference अपने ब्लॉग पर:

मैं जावास्क्रिप्ट के लिए आरएक्स साथ बहुत परिचित हूँ, हाल ही में होने इसका इस्तेमाल किया भारी एक बड़ा परियोजना पर, और डिजाइन के पहलुओं के बारे में तथ्य मेरे आरएक्स अनुभवों के साथ नॉकआउट को ध्यान में रखा जाता है।

पर्यवेक्षक पैटर्न के नॉकआउट के कार्यान्वयन और Rx के बीच मुख्य अंतर यह कि नॉकआउट स्वचालित रूप से आप हालांकि एक विशेष कार्यात्मक एपीआई सामने उन्हें निर्दिष्ट बिना संगठनों और निर्भरता नियमित प्रक्रियात्मक कोड से observables के बीच लाने का प्रयास है। मैं नियमित प्रक्रियात्मक/अनिवार्य-शैली कोड का उपयोग करने के लिए नॉकआउट चाहता हूं क्योंकि यह अधिकतर डेवलपर्स के लिए परिचित और पहुंच योग्य है।

एक और अंतर है कि आरएक्स को राज्य के बिना घटनाओं की धाराओं को लिखने के लिए अनुकूलित किया गया है। पर पहले मैं इस और इसकी कार्यात्मक शुद्धता के बारे में उत्साहित था, लेकिन कुछ समय बाद यह तेजी से महसूस हुआ जैसे मैं अजीब हुप्स के माध्यम से कूद रहा था और UI आदेशों को कुशलतापूर्वक प्रबंधित करने के लिए राज्य को अनुकरण करने के अतिरिक्त तरीकों का आविष्कार करना पड़ा। यही कारण है कि, नॉकआउट में, सभी अवलोकन को राज्य के रूप में माना जा सकता है - उदाहरण के लिए आप हमेशा अपने नवीनतम मान (जिसे कैश किया जाता है) पढ़ सकते हैं - यह अंतर्निहित डेटा परिवर्तनों तक पुन: गणना नहीं करता है)।

आरएक्स इवेंट स्ट्रीम रचना की उन्नत तरीके में नॉकआउट से आगे जाता है, जबकि नॉकआउट आरएक्स यूआई विकास में से आगे जाता है, जिससे आप तत्वों और टेम्पलेट्स एचटीएमएल डोम के लिए अपनी observables बाँध और उन्हें किसी भी तरह से आप चाहते हैं हेरफेर। आरएक्स यह करता है कि यह क्या करता है लेकिन यह बिल्कुल ठीक नहीं हुआ कि मैं समृद्ध यूआई बनाना चाहता था - इसलिए नॉकआउट का डिज़ाइन।

20

वे वास्तव में काफी अलग व्यवस्थाएं कर रहे हैं, हालांकि मैं देख सकता हूँ तुम क्यों विदेशी देखना चाहते हैं:

RxJs अतुल्यकालिक धाराओं के खिलाफ अभियान रचना, घटनाओं और वेब अनुरोध की तरह का एक साधन प्रदान करता है, और उन्नत परिदृश्यों में शामिल हैं धाराओं के संयोजन की तरह (जब दोनों ए और बी पाए जाते हैं, इस शुरू करते हैं, लेकिन इसे रद्द करता है, तो ए या बी फिर से पाए जाते हैं)

नॉकआउट एक MVVM रूपरेखा है कि आप एक मॉडल के माध्यम से अपने यूजर इंटरफेस के राज्य का प्रबंधन करने की अनुमति देता है कि इसकी कार्यक्षमता मानचित्र। यह आपके व्यू के तर्क को आपके दृश्य से अलग करने की अनुमति देता है।

+15

मैं सिर्फ यह ध्यान रखना चाहता था कि अब आप आरएक्स- और को-ऑब्जर्वेबल के बीच पुल कर सकते हैं। यहां देखें: https://github.com/cburgdorf/Knockout-Rx/blob/master/app/App.ViewModels.SearchViewModel.js – Christoph