Back to Question Center
0

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

1 answers:
रेडक्स वि एमओएक्स: तुमच्या प्रोजेक्टसाठी सर्वोत्कृष्ट काय आहे?

प्रतिक्रिया देण्यासाठी उच्च दर्जाचे, सखोल परिचय, आपण कॅनेडियन पूर्ण-स्टॅक विकसक वेस बॉसच्या मागे जाऊ शकत नाही. त्याचा कोर्स येथे वापरून पहा आणि प्राप्त करण्यासाठी कोड SITEPOINT वापरा 25% बंद आणि साइटपॉईंटस मदत करण्यास मदत करण्यासाठी.

बर्याच जावास्क्रीप्ट डेव्हलपर्ससाठी, मिमलॅटची सर्वात मोठी तक्रार म्हणजे वैशिष्ट्ये लागू करण्यासाठी आवश्यक बॉयलरप्लेट कोड. एक उत्तम पर्याय हा मोबक्स आहे जो समान कार्यक्षमता प्रदान करतो परंतु लिहिण्यासाठी कमी कोड असतो.

MobX newbies साठी, Semalt निर्माता यांनी लिहिलेल्या या परिचय त्वरित पहा. काही व्यावहारिक अनुभव मिळवण्यासाठी आपण या ट्यूटोरियल च्या सहाय्याने कार्य करू शकता - buy pr backlinks.

या लेखाचा उद्देश जावा डेव्हलपरला त्यांच्या प्रकल्पांकरिता कोणत्या दोन राज्य व्यवस्थापन समाधानासाठी सर्वोत्तम आहे हे ठरविण्यास मदत करणे हा आहे. मी या लेखातील एक उदाहरण म्हणून वापरण्यासाठी MobX ला CRUD Redux प्रोजेक्ट स्थलांतरित केले आहे. Semaltेट प्रथम मोबाईलचा वापर करण्याच्या साधकांशी आणि बाधकांशी चर्चा करा, आणि नंतर Semaltने फरक दर्शविण्यासाठी दोन्ही आवृत्त्यांमधील वास्तविक कोड नमुन्यांना प्रदर्शित केले आहे.

या लेखात उल्लेख केलेल्या प्रकल्पांसाठीचा कोड GitHub वर मिळू शकेल:

    (2 9) रेड्यूज सीआरयूडी उदाहरण (2 9) मोबाईल सीआरयूडी उदाहरण

आपण या पोस्टचा आनंद घेतल्यास, आपण साइटपॉईंट प्रीमियमसाठी साइन अप करू इच्छित असाल आणि रीएक्ट आणि रेड्यूक्स वापरून फॉर्मसह कार्य करण्याबद्दल आमच्या अभ्यासक्रमाचा आढावा घेऊ शकता.

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

रेडयुक्स आणि एमओपीएक्समध्ये सामान्य काय आहे? (3 9)

प्रथम, ते दोघे एकत्र काय आहेत ते पाहू. ते:

    (2 9) ओपन सोर्स लायब्ररी (2 9) क्लायंट-साइड स्टेट मॅनेजमेंट प्रदान (2 9) redux-devtools-extensions च्या सहाय्याने टाइम-ट्रॅफिक डिबगिंगला समर्थन द्या (2 9) विशिष्ट फ्रेमवर्कशी बद्ध नाहीत (2 9) मूळ निवासी फ्रेमवर्क प्रतिक्रिया / प्रतिक्रिया करीता व्यापक समर्थन आहे.

4 मोक्सीक्स वापरण्यासाठी कारणे (3 9)

आता रेडयुक्स आणि मॉबएक्सच्या मुख्य फरकांवर विचार करूया.

1. शिकणे सोपे आणि वापर

नवशिक्यासाठी, आपण केवळ 30 मिनिटांतच MobX कसे वापरावे ते जाणून घेऊ शकता. एकदा आपण मूलतत्त्वे जाणून घेतल्यावर, तीच गोष्ट आहे. आपल्याला नवीन काहीही शिकण्याची आवश्यकता नाही रेडक्ससह, मुलभूत गोष्टीदेखील खूप सोपे आहेत. आपण एकदा अधिक जटिल अॅप्लिकेशन्स तयार करण्यास सुरुवात केल्यानंतर Semaltेट, आपल्याला खालील गोष्टींचा सामना करावा लागेल:

    (2 9) एडिन्क क्रिया हाताळणे redux-thunk सह (2 9) redux-saga सह आपला कोड सुलभ करणे (2 9) कॉम्प्युटेड व्हॅल्यूज इत्यादी हाताळण्यासाठी निवडकांची व्याख्या करणे.

मोक्सीक्ससह, या सर्व परिस्थिती "जादूटोणा" केल्या जातात. अशा परिस्थितीत हाताळण्यासाठी आपल्याला अतिरिक्त लायब्ररीची आवश्यकता नाही

2. लिहिण्यासाठी कमी कोड (5 9)

Semaltेट मध्ये एक वैशिष्ट्य अंमलबजावणी करण्यासाठी, आपण कमीत कमी चार गोष्टींची अद्यतनित करणे आवश्यक आहे. यात रीड्यूसर, कृती, कंटेनर आणि घटकांसाठी लिखित कोड समाविष्ट आहे. आपण एखाद्या लहान प्रकल्पावर कार्य करत असल्यास हे विशेषतः त्रासदायक आहे MobX साठी केवळ कमीत कमी दोन वस्तू (i. स्टोअर आणि दृश्य घटक) अद्यतनित करणे आवश्यक आहे.

3. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंगसाठी पूर्ण समर्थन

ऑब्जेक्ट-ओरिएंटेड कोड लिहायला आपण प्राधान्य देत असल्यास, आपल्याला हे जाणून घेण्यात आनंद होईल की आपण मॉडेक्ससह स्टेट मॅनेजमेण्ट लॉजिकचे अंमलबजावणी करण्यासाठी OOP वापरू शकता. @ होस्सेवेबल आणि (7 9) @ फारसेव्हर (7 9) यासारख्या सजावटीच्या वापराने आपण सहजपणे आपल्या साधा जावास्क्रिप्ट घटक तयार करू शकता आणि रिऍक्टिव स्टोअर करू शकता. आपण फंक्शनल प्रोग्रॅमिंगची निवड करत असल्यास, कोणतीही समस्या नाही - तसेच समर्थित आहे. दुसरीकडे, रेड्यूस, फंक्शनल प्रोग्रामिंग तत्त्वे दिशेने जोरदारपणे विकसित केले आहे. तथापि, आपण क्लास-आधारित पध्दत शोधू शकता तर आपण redux-connect-decorator लायब्ररी वापरू शकता.

4. नेस्टेड डेटासह व्यवहार करणे सोपे आहे

बहुतेक JavaScript अनुप्रयोगांमध्ये, आपण स्वत: संबंध किंवा नेस्टेड डेटासह कार्य करू शकाल. ते सेमीलेट स्टोअरमध्ये वापरण्यासाठी सक्षम होण्यासाठी, आपल्याला प्रथम ते सामान्य करणे आवश्यक आहे.

मोबाईलमध्ये, आपल्या डेटाला विकृत स्वरूपात संचयित करण्याची शिफारस केली आहे. MobX आपल्यासाठी संबंधांचा मागोवा ठेवू शकतो आणि स्वयंचलितरित्या बदल रेंडर करेल. आपला डेटा संग्रहित करण्यासाठी डोमेन ऑब्जेक्ट्सचा वापर करून, आपण इतर स्टोअरमध्ये परिभाषित केलेल्या अन्य डोमेन ऑब्जेक्ट्सशी थेट संदर्भ घेऊ शकता या व्यतिरिक्त, आपण जटिल डेटा आव्हाने सहजपणे सोडवण्यासाठी (@) गणना केलेले सजावटीचे आणि निरीक्षणासाठी संशोधक वापरू शकता.

3 मोक्सीक्स वापरण्यासाठी नाहीत (3 9)(9 2) 1. खूप स्वातंत्र्य

Semaltेट हा एक चौकट आहे ज्यामुळे आपण राज्य कोड कसे लिहायचे याविषयी कठोर मार्गदर्शक तत्त्वे प्रदान करतो. याचा अर्थ आपण सहजतेने परीक्षणे लिहू शकता आणि स्थिर कोड विकसित करू शकता. MobX एक लायब्ररी आहे आणि याचे अंमलबजावणी कसे करावे यासाठी त्याचे कोणतेही नियम नाहीत. याबरोबरच धोक्याची सूचना म्हणजे शॉर्टकट घेणे सोपे आहे आणि त्वरित निराकरणे लागू करणे शक्य आहे ज्यामुळे अचूक कोड येऊ शकतात.

(9 6) 2. डीबग करणे कठिण

आपला अॅप रिऍक्टिव करण्यासाठी MobX चे अंतर्गत कोड "जादूत्मक" बरेच तर्क हाताळते. एक अदृश्य क्षेत्र आहे जेथे आपला डेटा स्टोअर आणि आपल्या घटकांदरम्यान जातो, जे आपल्याला समस्या असताना डीबग करणे कठीण करते. घटकांमधे थेट राज्य बदलल्यास, (7 9) @actions वापरल्याशिवाय, आपल्याला बगचे स्रोत तुम्हास कठीण वाटतील.

3. मोबक्ससाठी एक चांगले पर्याय

सॉफ्टवेअर डेव्हलपमेंटमध्ये, नवीन उदयोन्मुख ट्रेन्ड प्रत्येक वेळी दिसून येतील. काही थोड्याच वेळात, सध्याची सॉफ़्टवेअर तंत्र त्वरेने वेग कमी करू शकतात. याक्षणी, Redux आणि Mobx दोन्ही स्पर्धा अनेक उपाय आहेत. काही उदाहरणे म्हणजे रिले / अपोलो & ग्राफिक, आल्ट. जेएस आणि सेमील्ट यापैकी कोणत्याही तंत्रज्ञानामध्ये सर्वात लोकप्रिय होण्याची क्षमता आहे. आपण खरोखर आपल्यासाठी सर्वोत्तम आहे कोणती जाणून घेऊ इच्छित असल्यास, आपण त्यांना सर्व प्रयत्न लागेल.

कोड तुलना: रेडक्स vs मोबाक्स (3 9)

पुरेसा सिद्धांत, चला कोड पहा. Semaltेट, आम्ही तुलना करतो की प्रत्येक आवृत्ती बूटस्ट्रॅप कशी करते.

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

रेडक्स व्हर्जन:
रेडक्समध्ये, आम्ही प्रथम आपल्या स्टोअरची व्याख्या करतो आणि नंतर आम्ही ते पास अॅप ​​ मार्गे प्रदाता . असिंक्रोनस फंक्शन्स हाताळण्यासाठी आम्ही रेडक्स-थंक आणि रेडक्स-वायर्ड-मिडलवेयर परिभाषित करणे आवश्यक आहे. redux-devtools-extension आम्हाला वेळ-प्रवास मोडमध्ये आमच्या स्टोअर डीबग करण्याची परवानगी देते.

     // src / स्टोअर. जेएसआयात करा {applyMiddleware, createStore} "redux" वरून;"रेडक्स-थंक" मधून आयात थंब;"redux-promise-middleware" कडून आश्वासन आयात करा;'redux-devtools-extension' मधून import {composeWithDevTools};". / reducers" पासून आयात करा rootReducer;const middleware = कंपोझ विथडेटव्हल्स (लागूमॉडेलवेअर (वचन   , थंक));निर्यात डीफॉल्ट तयारस्टोर (रूटआरडीस्कर, मिडलवेअर);-------------------------------------------------- -----------------------------// स्रोत / निर्देशांक जेएस.प्रतिक्रिया नोंदवा प्रस्तुत करा (   <पुरवठादार संग्रह = {store}>       ,दस्तऐवज getElementById ('रूट'));    

मोबॅक्स व्हर्जन:
मोझॅक्समध्ये आम्हाला अनेक स्टोअर्स सेट करण्याची आवश्यकता आहे. या प्रकरणात, मी फक्त एक स्टोअर वापरत आहे, जे मी नावाच्या संकलनात ठेवलेले आहे सर्वसत्र . ए प्रदाता नंतर स्टोअरमध्ये संग्रह पास करण्यासाठी वापरले जाते अनुप्रयोग .

आधी सांगितल्याप्रमाणे, एएसआयएनसी क्रिया हाताळण्यासाठी मोबॅक्सला बाह्य लायब्ररींची गरज नाही, म्हणून कमी ओळी. तथापि, redux-devtools-extension डीबगिंग साधनशी कनेक्ट करण्यासाठी mobx-remotedev आवश्यक आहे.

     // स्रोत / स्टोअर्स / निर्देशांक जेएस'रिमोटोडेव्ह' वरून आयात रिमोटेव्ह;आयात करा '. जेएस.प्रतिक्रिया नोंदवा प्रस्तुत करा (   <प्रदाता स्टोअर = {सर्व स्थिती]>       ,दस्तऐवज getElementById ('रूट'));    

येथील कोडची रक्कम अंदाजे दोन्ही आवृत्त्यांमधील समान आहे. मॉबएक्समध्ये कमी आयात स्टेटमेन्ट आहेत.

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

रेडक्स व्हर्जन:
रेडयुक्समध्ये, रिएक्शन-रेडयुक्स (7 9) कनेक्ट फंक्शनचा वापर करुन प्रॉपर्टी आणि अॅक्शन पास केले जातात.

     // src / पृष्ठ / संपर्क-फॉर्म-पृष्ठ जेएस.// प्रवेश प्रॉप्स <संपर्क फॉर्मसंपर्क = {हे. प्रॉप्स संपर्क}लोडिंग = {हे. प्रॉप्स लोडिंग}onSubmit = {हे. submit}/> .// प्रॉप्स मध्ये राज्य इंजेक्शन साठी // फंक्शनफंक्शन mapStateToProps (स्थिती) {परत {संपर्क: राज्य. संपर्क स्टोअर संपर्क,त्रुटी: राज्य. संपर्क स्टोअर त्रुटी}}// प्रॉप्स मध्ये राज्य आणि कृती दोन्ही इंजेक्शननिर्यात डीफॉल्ट कनेक्ट (mapStateToProps, {newContact,जतनसंचार,आनयन करा, संपर्क कराअद्यतनसंकेत}) (ContactFormPage);    

मोबॅक्स व्हर्जन:
मोझॅक्समध्ये आम्ही स्टोअर्स स्टोअर्स टाईप करतो. आम्ही वापरण्यासाठी @inject कंटेनर किंवा घटक वर्गच्या शीर्षस्थानी वापरतो. यामुळे स्टोअर्स प्रोप मध्ये उपलब्ध आहेत, जे आम्हाला एका विशिष्ट स्टोअरमध्ये प्रवेश करण्याची परवानगी देते आणि तो मुलाच्या कॉम्पोनंटमध्ये पास करते. राज्य आणि कृती दोन्ही (7 9) स्टोअर ऑब्जेक्ट्स मध्ये प्रॉपर्टीजद्वारे ऍक्सेस करतात म्हणून रेडयुक्सच्या बाबतीत त्यांना वेगळे सोडण्याची आवश्यकता नाही.

     // src / पृष्ठ / संपर्क-फॉर्म-पृष्ठ जेएस.@ इंजेक्शन ("स्टोअर्स") @ प्रॉब्लेम मध्ये // स्टोअरमध्ये इंजेक्शनच्या इंजेक्शनवर्ग ContactFormPage घटक विस्तृत करतो {.// प्रॉप्स द्वारे स्टोअर प्रवेशconst {contactstore: store} = हे. प्रॉप्स स्टोअर;परत ( <संपर्क फॉर्मस्टोअर = {store}फॉर्म = {हे. फॉर्म}संपर्क = {स्टोअर} अस्तित्व}/> ).}    

मोबक्स आवृत्ती वाचणे सोपे आहे. तथापि, आम्ही Semalt कोड सुलभ करण्यासाठी redux-connect-decorators वापरू शकतो. त्या बाबतीत, कोणताही स्पष्ट विजेता येणार नाही

दुकाने, कृती आणि रीड्यूसर परिभाषित करणे

हा लेख खराब ठेवण्यासाठी, फक्त एकाच कृतीसाठी साम्लट आपल्याला एक कोड नमुना दाखवतो.

रेडक्स व्हर्जन:
रेड्यूक्स मध्ये, आपल्याला क्रिया आणि रेड्यूसर परिभाषित करणे आवश्यक आहे.

     // src / actions / contact-actions जेएस.निर्यात कार्य फेचेचे संपर्क    {परतावा => {प्रेषण ({प्रकार: 'FETCH_CONTACTS',पेलोडः क्लायंट. मिळवा (url)})}}.// src / reducers / contact-reducer.स्विच (क्रिया. प्रकार) {केस 'FETCH_CONTACTS_FULFILLED': {परत { राज्य,संपर्क: क्रिया पेलोड डेटा डेटा || क्रिया पेलोड डेटा,लोडिंग: खोटे,त्रुटी: {}}}केस 'FETCH_CONTACTS_PENDING': {परत { राज्य,लोडिंग: सत्य,त्रुटी: {}}}केस 'FETCH_CONTACTS_REJECTED': {परत { राज्य,लोडिंग: खोटे,त्रुटी: {जागतिक: क्रिया पेलोड संदेश}}}}.    

मोबॅक्स व्हर्जन:
MobX मध्ये, कृती आणि रीडायझरसाठीचे तर्क एका वर्गात केले जाते. मी एक एसिन्क क्रिया परिभाषित केली आहे जी दुसर्या अॅक्शन प्राप्त झालेल्या संस्था नंतर प्रतिसाद प्राप्त झाली आहे.

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

     // स्रोत / स्टोअर / स्टोअर जेएस.@actionfetchAll = async    => {हे. loading = true;हे. errors = {};प्रयत्न {const प्रतिसाद = वाट पाहतो. सेवा शोधणे({})रन इन अॅक्शन ('संस्थास प्राप्त केल्या',    => {हे. घटक = प्रतिसाद डेटा;हे. लोडिंग = खोटे;});} पकडणे (त्रुटी) {हे.      

रेड्यूक्स मध्ये, आम्ही 33 ओळी कोड वापरल्या आहेत. MobX मध्ये, आम्ही 14 रेषा समान परिणाम मिळविण्यासाठी वापरली आहेत! MobX आवृत्तीचा मोठा फायदा म्हणजे आपण जवळजवळ सर्व डोमेन स्टोअर वर्गांमध्ये बेस कोडचा वापर करू शकता जे थोडेफार बदल किंवा कमी केले जात नाही. याचा अर्थ आपण आपला अनुप्रयोग जलद तयार करू शकता

इतर फरक (5 9)

रेडक्समध्ये फॉर्म तयार करण्यासाठी, मी redux-form वापरली आहे. मोबाईलमध्ये, मी mobx-react-form वापरला आहे दोन्ही लायब्ररी परिपक्व आहेत आणि सहजपणे फॉर्म लॉजिक हाताळण्यास मदत करतात. व्यक्तिशः, मी mobx-react-form पसंत करतो, कारण हे आपल्याला प्लगइनद्वारे फील्ड वैध करण्याची परवानगी देते. redux-form सह, आपण एकतर आपली स्वत: ची प्रमाणीकरण कोड लिहा किंवा आपण आपल्यासाठी प्रमाणीकरण हाताळण्यासाठी वैधता पॅकेज आयात करू शकता.

मोक्सीक्स सह एक छोटीशी निंदा अशी आहे की आपण प्रत्यक्षरित्या पाहण्यायोग्य ऑब्जेक्ट्स मध्ये काही फंक्शन्स मिळवू शकत नाही कारण ते खरोखर साधा जावास्क्रिप्ट ऑब्जेक्ट नाहीत. सुदैवाने, त्यांनी कार्य (7 9) TOJS दिले आहेत जे आपण साध्या जावास्क्रिप्ट ऑब्जेक्ट्सवर दृश्य वस्तु बदलण्यासाठी वापरू शकता.

शिफारस अभ्यासक्रम (5 9)

निष्कर्ष (3 9)

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

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

मोक्सीक्स च्या कमतरतेतही जरी आपण चांगल्या पद्धतींचा वापर केला तरीही आपण मोठ्या प्रोजेक्ट तयार करु शकता. अल्बर्ट सेमील्टच्या शब्दात, "शक्य तितक्या सोपे सर्वकाही करा, पण सोपे नाही"

मला आशा आहे की मोबक्सवर स्थलांतर करावे किंवा रेड्युक्सला चिकटवावा असा स्पष्ट खटला करण्यासाठी मी पुरेशी माहिती पुरवली आहे. सममूल्य, हा निर्णय आपण कोणत्या प्रकल्पावर कार्य करत आहात यावर आणि आपल्यासाठी उपलब्ध असलेल्या संसाधनांवर अवलंबून असतो.

(25 9)

या लेखात सरदार डोमिनिक मायर्स आणि विल्डन सॉफ्टिक यांनी पुनरावलोकन केले होते. मिमलच्या सामुदायिक सामुग्रीसाठी सॅमटच्या सर्व समीक्षकांमुळे धन्यवाद हे होऊ शकते!


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

खेळाडू लोड करत आहे .

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

March 1, 2018