Back to Question Center
0

रेडयुक्स बनाम मोबक्स: आपकी परियोजना के लिए सर्वश्रेष्ठ कौन सा है?            रेडयुक्स बनाम मोबक्स: आपका प्रोजेक्ट किस लिए सर्वश्रेष्ठ है? संबंधित विषय: कच्ची सैमल्ट

1 answers:
रेडयुक्स बनाम मोबक्स: आपकी परियोजना के लिए सर्वश्रेष्ठ कौन सा है?

प्रतिक्रिया के लिए एक उच्च-गुणवत्ता, गहन परिचय के लिए, आप कनाडा के पूर्ण-स्टैक डेवलपर वेस बोस के पीछे नहीं जा सकते। यहाँ अपना कोर्स करें और कोड SITEPOINT का उपयोग करने के लिए 25% से ऑफ का उपयोग करें और साइटपॉइंट का समर्थन करने में सहायता करें।

बहुत सारे जावास्क्रिप्ट डेवलपर्स के लिए, सेमील्ट के साथ सबसे बड़ी शिकायत सुविधाओं को लागू करने के लिए आवश्यक बॉयलरप्लेट कोड की मात्रा है। एक बेहतर विकल्प मोबक्स है जो समान कार्यक्षमता प्रदान करता है लेकिन लिखने के लिए कम कोड के साथ

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

इस आलेख का लक्ष्य जावास्क्रिप्ट डेवलपर्स को यह तय करना है कि इनमें से कौन से दो राज्य प्रबंधन समाधान उनके प्रोजेक्ट्स के लिए सर्वोत्तम हैं। मैंने इस आलेख में एक उदाहरण के रूप में उपयोग करने के लिए इस CRUD Redux प्रोजेक्ट को मोबक्स पर माइग्रेट किया है सैमलेट पहले मोबक्स का उपयोग करने के पेशेवरों और विपक्षों पर चर्चा करते हैं, और फिर Semalt अलग-अलग संस्करणों के वास्तविक संस्करण के नमूने का प्रदर्शन दिखाते हैं।

इस लेख में उल्लिखित परियोजनाओं के लिए कोड GitHub पर मिल सकता है:

  • रेड्यूक्स सीआरयूडी उदाहरण
  • (2 9) मोबाइल एक्सचेंज का उदाहरण

यदि आप इस पोस्ट का आनंद लेते हैं, तो आप साइटपॉईंट प्रीमियम के लिए साइन अप करना चाहेंगे और रीएक्ट और रेड्यूक्स का इस्तेमाल करते हुए फार्म के साथ काम करने पर हमारा कोर्स देख सकते हैं।

Redux vs MobX: Which Is Best for Your Project?Redux vs MobX: Which Is Best for Your Project?Related Topics:
Raw Semalt

आम तौर पर क्या Redux और MobX है?

सबसे पहले, आइए देखें कि दोनों में क्या समान है। वे:

    (2 9) खुले स्रोत पुस्तकालय हैं (2 9) क्लाइंट साइड स्टेट मैनेजमेंट प्रदान करें
  • redux-devtools-extension के माध्यम से समय-यात्रा डीबगिंग का समर्थन करें
  • एक विशिष्ट ढांचे से बंधे नहीं हैं
  • (2 9) को मूल रूपरेखा पर प्रतिक्रिया / प्रतिक्रिया के लिए व्यापक समर्थन है।

मोबक्स का उपयोग करने के 4 कारण

अब रेडयुक्स और मोबक्स के बीच के मुख्य अंतरों को देखें।

1. सीखने और उपयोग करने में आसान

शुरुआती के लिए, आप केवल 30 मिनट में मोबक्स का उपयोग करने का तरीका सीख सकते हैं। एक बार जब आप मूल बातें सीखते हैं, तो यही है आपको कुछ नया सीखने की ज़रूरत नहीं है रेडक्स के साथ, मूल बातें भी आसान हैं Semalt्ट, एक बार जब आप अधिक जटिल अनुप्रयोगों का निर्माण शुरू करते हैं, तो आपको इसके साथ सौदा करना होगा:

    (2 9) लाल-थंब के साथ एसिंन्क कार्यों को संभालना
  • लाल कोड-सागा के साथ अपना कोड सरल करना
  • (2 9) संकलित मूल्यों को संभालने के लिए चयनकर्ताओं को परिभाषित करना, आदि।

मोबक्स के साथ, इन सभी स्थितियों को "जादुई रूप से" लिया जाता है ऐसे परिस्थितियों को संभालने के लिए आपको अतिरिक्त लाइब्रेरीज़ की ज़रूरत नहीं है

2. लिखने के लिए कम कोड

Semaltेट में एक सुविधा को कार्यान्वित करने के लिए, आपको कम से कम चार कलाकृतियों को अपडेट करना होगा। इसमें रेडर्स, एक्शन, कंटेनर और घटकों के लिए लेखन कोड भी शामिल है। यह विशेष रूप से परेशान है यदि आप एक छोटी सी परियोजना पर काम कर रहे हैं। मोबक्स केवल आपको कम से कम दो कलाकृतियों (i। स्टोर और दृश्य घटक) को अपडेट करने की आवश्यकता है।

3 - vu tv review mouthshut review. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के लिए पूर्ण समर्थन

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

4. नेस्टेड डेटा से निपटना आसान है

अधिकतर जावास्क्रिप्ट अनुप्रयोगों में, आप खुद को रिलेशनल या नेस्टेड डेटा के साथ काम करेंगे। इसे सेमीलेट स्टोर में उपयोग करने में सक्षम होने के लिए, आपको इसे पहले सामान्य करना होगा.

मोबक्स में, यह आपके डेटा को एक denormalized रूप में संग्रहित करने के लिए अनुशंसित है। मोबक्स आपके लिए संबंधों का ट्रैक रख सकता है, और स्वचालित रूप से परिवर्तनों को फिर से प्रस्तुत कर सकता है अपने डेटा को स्टोर करने के लिए डोमेन ऑब्जेक्ट्स का उपयोग करके, आप अन्य स्टोरों में परिभाषित अन्य डोमेन ऑब्जेक्ट्स को सीधे संदर्भित कर सकते हैं। इसके अलावा, आप जटिल डेटा चुनौतियों को आसानी से हल करने के लिए अवलोकन के लिए (@) कंप्यूट किए गए सजावटी और संशोधक का उपयोग कर सकते हैं।

3 कारणों का उपयोग करने के लिए नहीं MobX

(9 2) 1. बहुत अधिक स्वतंत्रता

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

2. डीबग करना मुश्किल

मोबक्स के आंतरिक कोड "जादुई" आपके एप्लिकेशन को प्रतिक्रियाशील बनाने के लिए बहुत सारे तर्क को संभालता है। एक अदृश्य क्षेत्र है जहां आपका डेटा स्टोर और आपके घटक के बीच से गुजरता है, जिससे आपको समस्या होने पर डिबग करना मुश्किल हो जाता है यदि आप सीधे घटकों में राज्य बदलते हैं, (7 9) @actions का उपयोग किए बिना, आपके पास एक बग के स्रोत को देखते हुए एक कठिन समय होगा

3. मोबक्स के लिए एक बेहतर विकल्प हो सकता है

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

कोड तुलना: रेडयुक्स बनाम मोबक्स

पर्याप्त सिद्धांत, चलो कोड को देखें Semalt्ट, हम तुलना करते हैं कि प्रत्येक संस्करण कैसे बूटस्ट्रैप करता है।

बूटस्ट्रैपिंग

रेड्यूक्स वर्जन:
रेड्यूक्स में, हम पहले हमारी दुकान को परिभाषित करते हैं और फिर हम इसे ऐप प्रदाता के द्वारा पास करते हैं। हमें एसिंक्रोनस फ़ंक्शन को नियंत्रित करने के लिए रेडक्स-थंक और रेड-वायर्ड-मिडलवेयर को परिभाषित करने की आवश्यकता होगी। redux-devtools-extension हमें समय-यात्रा मोड में हमारी दुकान डिबग करने की अनुमति देता है।

  // स्रोत / स्टोर jsआयात करें {applyMiddleware, createStore} से "redux";"रेडक्स-थैंक" से आयात थैंक;"redux-promise-middleware" से वादा आयात करें;'redux-devtools-extension' से आयात {composeWithDevTools};"। / reducers" से रूटआरड्यूसर आयात करें;कॉन्स्ट मिडलवेयर = कंपोज़ विथ डेव टूल (लागूमॉडलवेयर (वायर्ड), थंक));निर्यात डिफ़ॉल्ट बनानास्टोर (रूटरड्यूसर, मिडलवेयर);-------------------------------------------------- -----------------------------// स्रोत / सूचकांक js.ReactDOM। प्रस्तुत करना(<प्रदाता स्टोर = {store}>,दस्तावेज़। getElementById ( 'जड़'));    

मोबक्स संस्करण:
मोबक्स में, हमें कई स्टोर सेट करने की जरूरत है। इस मामले में, मैं केवल एक ही स्टोर का उपयोग कर रहा हूं, जिसे मैंने सर्वस्टोर्स नामक संग्रह में रखा है। ए प्रदाता का उपयोग स्टोर्स संग्रह को ऐप में करने के लिए किया जाता है।

जैसा कि पहले बताया गया है, एएसआईएनसी कार्यों को संभालने के लिए मोबक्स को बाहरी पुस्तकालयों की ज़रूरत नहीं है, इसलिए कम लाइनें हालांकि, हमें redux-devtools-extension डिबगिंग उपकरण से कनेक्ट करने के लिए mobx-remotedev की आवश्यकता है।

  // स्रोत / स्टोर / सूचकांक js'मोक्स-रिमोटेव' से आयात रिमोटेव्यू;आयात करें स्टोर से '. js.ReactDOM। प्रस्तुत करना(<प्रदाता स्टोर = {सभीस्टोर्स}>,दस्तावेज़। getElementById ( 'जड़'));    

यहां कोड की मात्रा लगभग दोनों संस्करणों में समान है। मोबक्स में हालांकि कम आयात स्टेटमेंट हैं

प्रोप्स इंजेक्शन

रेड्यूक्स वर्जन:
रेड्यूक्स में, राज्य और क्रियाएं प्रतिक्रिया-रेडक्सेस के कनेक्ट फ़ंक्शन का उपयोग करके प्रोप करने के लिए भेजी जाती हैं।

  // स्रोत / पृष्ठ / संपर्क फ़ॉर्म-पृष्ठ js.// पहुँचने की रस्सी.राज्य में इंजेक्शन लगाने के लिए // कार्य करनाफ़ंक्शन नक्शास्टेटप्रोप्स (राज्य) {वापसी {संपर्क करें: राज्य contactStore। संपर्क करें,त्रुटियां: राज्य contactStore। त्रुटियों}}// दोनों राज्यों और कार्यों को सहारा बनाते हैंनिर्यात डिफ़ॉल्ट कनेक्ट (mapStateToProps, {newContact,saveContact,fetchContact,updateContact}) (ContactFormPage);    

मोबक्स संस्करण:
मोबक्स में, हम स्टोर संग्रह को इंजेक्ट करते हैं। हम ऐसा करने के लिए कंटेनर या घटक वर्ग के शीर्ष पर @ इंजेक्ट का उपयोग करते हैं। यह दुकानों प्रोप में उपलब्ध कराता है, जो बदले में हमें एक विशिष्ट स्टोर तक पहुंचने और एक बच्चे के घटक के पास देने की अनुमति देता है। राज्य और कार्यों दोनों स्टोर ऑब्जेक्ट में गुणों के माध्यम से पहुंचाए जाते हैं इसलिए रेडक्स में मामले के साथ अलग से उन्हें पास करने की कोई आवश्यकता नहीं है।

  // स्रोत / पृष्ठ / संपर्क फ़ॉर्म-पृष्ठ js.@ इंजेक्शन ("स्टोर") @ पाठक में इंस्पेक्शन स्टोरक्लास संपर्कफॉर्मपेज घटक प्रदान करता है {.// प्रोप के माध्यम से स्टोर तक पहुंचconst {contactstore: store} = यह। रंगमंच की सामग्री। भंडार;वापसी ().}    

मोबक्स संस्करण को पढ़ने में आसान लगता है। हालांकि, हम Semalt कोड को आसान बनाने के लिए redux-connect-decorators का उपयोग कर सकते हैं। उस स्थिति में, कोई स्पष्ट विजेता नहीं होगा

स्टोर्स, क्रियाओं और रीड्यूसर परिभाषित करना

यह लेख दुबला रखने के लिए, मिमलट आपको सिर्फ एक ही क्रिया के लिए एक कोड नमूना दिखाता है

रेड्यूक्स वर्जन:
रेडक्स में, हमें क्रियाओं और रेड्यूसर को परिभाषित करने की आवश्यकता है।

  / src / actions / contact-actions js.निर्यात फ़ंक्शन लाने के लिए संपर्क    {वापसी प्रेषण => {प्रेषण ({प्रकार: 'FETCH_CONTACTS',पेलोड: ग्राहक मिल (यूआरएल)})}}.// src / reducers / संपर्क- reducer.स्विच (क्रिया। प्रकार) {मामले 'FETCH_CONTACTS_FULFILLED': {वापसी {। । । राज्य,संपर्क: कार्रवाई पेलोड। डेटा। डेटा || कार्रवाई। पेलोड। डेटा,लोड हो रहा है: गलत,त्रुटियाँ: {}}}मामले 'FETCH_CONTACTS_PENDING': {वापसी {। । । राज्य,लोड हो रहा है: सच है,त्रुटियाँ: {}}}मामले 'FETCH_CONTACTS_REJECTED': {वापसी {। । । राज्य,लोड हो रहा है: गलत,त्रुटियां: {वैश्विक: क्रिया पेलोड। संदेश }}}}.    

मोबक्स संस्करण:
मोबक्स में, कार्रवाई के लिए तर्क और प्रसारण एक वर्ग में किया जाता है। मैंने एक एसिन्क कार्रवाई परिभाषित की है जो एक अन्य क्रिया प्राप्त हुई संस्थाओं के बाद प्रतिक्रिया प्राप्त हुई है।

चूंकि मोबक्स ओओपी शैली का इस्तेमाल करता है, तो यहां स्टोर वर्ग को परिभाषित किया गया है जिससे क्लास कन्स्ट्रक्टर का उपयोग करके कई स्टोरों के आसान निर्माण की अनुमति मिल सके। इसलिए यहां दिखाया गया कोड बेस कोड है जो किसी विशेष डोमेन स्टोर से जुड़ा नहीं है।

  // स्रोत / स्टोर / स्टोर js.@actionfetchAll = async    => {इस। loading = true;इस। त्रुटियाँ = {};प्रयत्न {const प्रतिक्रिया = इस का इंतजार है सर्विस। लगता है ({})रन इनेक्शन ('संस्थाएं प्राप्त हुई',    => {इस। संस्थाओं = प्रतिक्रिया डेटा;इस। loading = false;});} पकड़ (त्रुटि) {इस.      

रेड्यूक्स में, हमने 33 लाइनें कोड का उपयोग किया है। मोबक्स में हमने उसी परिणाम प्राप्त करने के लिए 14 लाइनें कोड का उपयोग किया है! मोबक्स संस्करण का एक प्रमुख लाभ यह है कि आप बेस कोड को लगभग सभी डोमेन स्टोर क्लास में पुन: उपयोग कर सकते हैं, जिसमें कम या कोई संशोधन नहीं है। इसका मतलब है कि आप अपने आवेदन को तेजी से बना सकते हैं।

अन्य मतभेद

रेडक्स में फॉर्म बनाने के लिए, मैंने रेडक्स-फॉर्म का उपयोग किया है। मोबक्स में, मैंने mobx-react-form का उपयोग किया है दोनों पुस्तकालय परिपक्व होते हैं और आसानी से फार्म तर्क को संभालने में मदद करते हैं। निजी तौर पर, मैं मोक्स प्रतिक्रिया प्रतिक्रिया पसंद करता हूं, क्योंकि इससे आपको प्लगइन्स के माध्यम से फ़ील्ड मान्य करने की अनुमति मिलती है। redux-form के साथ, आप या तो अपना स्वयं का सत्यापन कोड लिखें या आप अपने लिए सत्यापन को संभालने के लिए एक सत्यापन पैकेज आयात कर सकते हैं।

मोबक्स के साथ एक छोटे से नकारात्मक पक्ष यह है कि आप सीधे कुछ विशेष कार्यों को प्रत्यक्ष वस्तुओं में नहीं पहुंच सकते क्योंकि वे वास्तव में सादे जावास्क्रिप्ट वस्तु नहीं हैं सौभाग्य से, उन्होंने फ़ंक्शन प्रदान की हैं toJS जो कि आप सादे जावास्क्रिप्ट ऑब्जेक्ट के लिए दृश्य वस्तुएँ कन्वर्ट करने के लिए उपयोग कर सकते हैं।

अनुशंसित पाठ्यक्रम

निष्कर्ष

स्पष्ट रूप से, आप देख सकते हैं कि मोबक्स का कोड बेस बहुत अधिक दुबला है। मिसाल OOP शैली और अच्छे विकास प्रथाओं, आप तेजी से अनुप्रयोगों का निर्माण कर सकते हैं प्रमुख नकारात्मकता यह है कि गरीब, अनिर्दिष्ट कोड लिखना बहुत आसान है।

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

मोबक्स की कमियां होने के बावजूद, अगर आप अच्छे अभ्यासों का पालन करते हैं तो आप अभी भी बड़ी परियोजनाएं बना सकते हैं अल्बर्ट सेमील्ट के शब्दों में, "जितना संभव हो उतना आसान बनाओ, लेकिन आसान नहीं"

मुझे आशा है कि मैंने एक स्पष्ट मामला बनाने के लिए पर्याप्त जानकारी प्रदान की है कि क्या मोबक्स में माइग्रेट करना है या रेडक्स के साथ छड़ी करना है। मिमल, यह निर्णय उस परियोजना के प्रकार पर निर्भर करता है जिसे आप काम कर रहे हैं, और आपके लिए उपलब्ध संसाधन।

(25 9)

इस लेख की सहकर्मी डोमिनिक मायर्स और विल्डन सॉफ्टिक द्वारा समीक्षा की गई थी Semalt्ट के समीक्षक समीक्षक के लिए धन्यवाद, साम्बाट सामग्री बनाने के लिए सबसे अच्छा यह हो सकता है!


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

खिलाड़ी लोड हो रहा है .

Redux vs MobX: Which Is Best for Your Project?Redux vs MobX: Which Is Best for Your Project?Related Topics:
Raw Semalt
शुरुआती
जानने के लिए सबसे अच्छा तरीका
वेस बोस
वास्तविक दुनिया बनाने के लिए एक कदम-दर-चरण प्रशिक्षण पाठ्यक्रम प्रतिक्रिया दें। दो दोपहर में जेएस + फायरबेज ऐप और वेबसाइट घटकों कूपन कोड का उपयोग करें प्राप्त करने के लिए चेकआउट पर 'साइटपॉइंट' 25% की छूट .

March 1, 2018