Back to Question Center
0

Redux بمقابلہ MobX: آپ کے منصوبے کے لئے کون سا بہترین ہے؟            Redux بمقابلہ MobX: آپ کے پروجیکٹ کے لئے کون سا بہترین ہے؟ متعلقہ موضوعات: راؤنڈ Semalt

1 answers:
Redux بمقابلہ MobX: آپ کے منصوبے کے لئے کون سا بہترین ہے؟

ایک اعلی معیار کے لۓ، ریفریجریشن کے ساتھ گہرائی کا تعارف، آپ کو کینیڈین کے مکمل اسٹیک ڈویلپر ویز بوس نہیں جا سکتا. یہاں اپنے کورس کی کوشش کریں، اور سیفٹیٹ کو 25٪ آف حاصل کرنے اور سائٹ پٹپوٹ کی مدد کرنے میں مدد کے لئے استعمال کریں.

بہت سے جاوا اسکرپٹ ڈویلپرز کے لئے، Semalt کی سب سے بڑی شکایت خصوصیات کی لاگو کرنے کے لئے ضروری بوائلرپلپل کوڈ ہے - кактусовая груша. ایک بہتر متبادل موکس ہے جو اسی طرح کے کام کرتا ہے لیکن لکھنے کے لئے کم کوڈ ہے.

MobX newbies کے لئے، Semalt خالق کی طرف سے لکھا اس تعارف پر ایک فوری نظر ڈالیں. آپ کچھ عملی تجربے حاصل کرنے کے لۓ اس سبق کے ذریعہ بھی کام کرسکتے ہیں.

اس آرٹیکل کا مقصد یہ ہے کہ جاوا اسکرپٹ ڈویلپرز کی مدد کرنے کا فیصلہ کیا جائے، فیصلہ کیا ہے کہ ان دونوں ریاستی انتظامی حل ان منصوبوں کے لئے بہتر ہیں. میں اس CRUD ریڈوز پراجیکٹ کو موکس میں منتقل کر دیا ہے تاکہ اس مضمون میں ایک مثال کے طور پر استعمال کریں. Semalt سب سے پہلے موکس کا استعمال کرتے ہوئے پیشہ اور کنس پر تبادلہ خیال کرتے ہیں، اور پھر سمالٹ فرق کو ظاہر کرنے کے لئے دونوں ورژنوں سے اصل کوڈ نمونے کا مظاہرہ کرتے ہیں.

اس مضمون میں ذکر کردہ منصوبوں کے کوڈ گٹھب پر پایا جا سکتا ہے:

  • Redux CRUD مثال
  • MobX CRUD مثال

اگر آپ اس مراسلہ سے لطف اندوز کرتے ہیں تو، آپ سائٹپوائنٹ پریمیم کے لئے سائن اپ کرنا چاہتے ہیں اور دوبارہ اور Redux استعمال کرتے ہوئے فارم کے ساتھ کام کرنے پر اپنے کورس کو دیکھ سکتے ہیں.

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

Redux اور MobX کیا کام میں ہے؟

سب سے پہلے، ہم دونوں کو مشترکہ طور پر کیا دیکھتے ہیں. وہ:

  • کھلے وسائل لائبریری ہیں
  • کلائنٹ سائڈ اسٹیٹ مینجمنٹ فراہم کرتے ہیں
  • redux-devtools-extension کے ذریعے ٹائم ٹریول ڈیبگنگ کی حمایت کرتے ہیں
  • ایک خاص فریم ورک سے منسلک نہیں ہیں
  • (2 9) ریفیکٹ / ریپیکٹ مقامی فریم ورک کے لئے وسیع حمایت ہے.

4 ایکسکس استعمال کرنے کے لئے

اب اب Redux اور MobX کے درمیان اہم فرق نظر آتے ہیں.

1. سیکھنے اور استعمال کرنے میں آسان

ابتدائی طور پر، آپ سیکھ سکتے ہیں کہ کس طرح MobX کو صرف 30 منٹ میں استعمال کرنا ہے. ایک بار جب آپ بنیادی باتیں سیکھتے ہیں تو یہ ہے. آپ کو کچھ بھی نیا سیکھنے کی ضرورت نہیں ہے. Redux کے ساتھ، بنیادی باتیں بھی آسان ہے. Semalt، ایک بار جب آپ کو مزید پیچیدہ ایپلی کیشنز کی تعمیر کرنا شروع ہو تو، آپ کو اس سے نمٹنے کی ضرورت ہوگی:

    (2 9) ریڈکس کے ساتھ ساتھ عینک کارروائیوں کو سنبھالا (2 9) آپ کے کوڈ کو ریڈیوکس کے ساتھ آسان بنانے (2 9) تحریر اقدار، وغیرہ کو ہینڈل کرنے کے لئے منتخب کرنے والے منتخب کرنے والے

MobX کے ساتھ، ان تمام حالات "جادوگر" کی دیکھ بھال کر رہے ہیں. ایسی صورت حال کو سنبھالنے کے لئے آپ کو اضافی لائبریریوں کی ضرورت نہیں ہے.

2. لکھنے کے لئے کم کوڈ

Semalt میں ایک خصوصیت کو لاگو کرنے کے لئے، آپ کو کم سے کم چار نمونے کو اپ ڈیٹ کرنے کی ضرورت ہے. اس میں reducers، اعمال، کنٹینرز اور اجزاء کے لئے لکھنا کوڈ شامل ہے. اگر یہ ایرر برقرار رہے تو ہمارے ہیلپ ڈیسک سے رابطہ کریں. غلط استعمال کی اطلاع دیتے ہوئے ایرر آ گیا ہے. MobX صرف آپ کو کم از کم دو آرٹفیکٹس (i.e. سٹور اور نقطہ نظر کا حصہ) اپ ڈیٹ کرنے کی ضرورت ہے.

3. اعتراض پر مبنی پروگرامنگ کے لئے مکمل حمایت

اگر آپ آرڈر پر مبنی کوڈ کو ترجیح دیتے ہیں، تو آپ خوش ہوں گے کہ آپ MOX کے ساتھ ریاستی انتظامی منطق کو لاگو کرنے کیلئے OOP استعمال کرسکتے ہیں. ڈیکریبیوٹروں کے استعمال کے ذریعے @ بذریعہ @ 80 (@) اور observer ، آپ آسانی سے اپنے سادہ جاوا اسکرپٹ کے اجزاء کو تشکیل دے سکتے ہیں اور رد عمل کو محفوظ رکھ سکتے ہیں. اگر آپ فنکشنل پروگرامنگ کو ترجیح دیتے ہیں تو کوئی مسئلہ نہیں - اس کی مدد کی جاتی ہے. دوسری طرف، Redux، بھاری طور پر فعال پروگرامنگ کے اصولوں کی طرف سے تیار کیا جاتا ہے. تاہم، اگر آپ ایک کلاس پر مبنی نقطہ نظر چاہتے ہیں تو آپ redux-connect-decorator کی لائبریری کا استعمال کرسکتے ہیں.

4. نزدیک اعداد و شمار سے نمٹنے کے لئے آسان ہے

سب سے زیادہ جاوا اسکرپٹ ایپلی کیشنز میں، آپ اپنے آپ کو متعلقہ یا غیر متوقع اعداد و شمار کے ساتھ کام کر رہے ہیں. Semalt اسٹور میں اسے استعمال کرنے کے قابل ہو، آپ کو اسے پہلے سے معمول کرنا ہوگا.

MobX میں، یہ آپ کے ڈیٹا کو غیر معمولی شکل میں ذخیرہ کرنے کی سفارش کی جاتی ہے. MobX آپ کے لئے تعلقات کا تعاقب رکھتا ہے، اور خود بخود تبدیلیوں کو پھر سے دوبارہ فراہم کرے گا. اپنے اعداد و شمار کو ذخیرہ کرنے کے لئے ڈومین چیزوں کا استعمال کرتے ہوئے، آپ دوسری دکانوں میں بیان کردہ دیگر ڈومین اشیاء کو براہ راست حوالہ دے سکتے ہیں. اس کے علاوہ، آپ پیچیدہ اعداد و شمار کے چیلنجوں کو آسانی سے حل کرنے کے لئے مبینہ طور پر پیچیدہ ڈیکیکٹرز اور ترمیم کے استعمال کرسکتے ہیں.

3 وجوہات کا استعمال کرنے کے لئے نہیں MobX

1. بہت زیادہ آزادی

Semalt ایک فریم ورک ہے جو آپ کو ریاستی کوڈ لکھتے ہیں پر سخت ہدایات فراہم کرتا ہے. اس کا مطلب یہ ہے کہ آپ آسانی سے ٹیسٹ لکھ سکتے ہیں اور برقرار رکھنے والا کوڈ تیار کرسکتے ہیں. MobX ایک لائبریری ہے اور اسے کیسے لاگو کرنے کے لئے کوئی قواعد موجود نہیں ہیں. اس کے ساتھ خطرہ یہ ہے کہ شارٹ کٹس لینے کے لۓ بہت آسان ہے اور فوری اصلاحات پر عمل کریں جو ناقابل اعتماد کوڈ کی قیادت کرسکتی ہے.

2. ڈیبگ مشکل

MobX کے اندرونی کوڈ "جادوگر" آپ کی درخواست کے رد عمل کو بنانے کے لئے بہت سارے منطق کو ہینڈل کرتی ہے. وہاں ایک پوشیدہ علاقہ ہے جہاں آپ کا ڈیٹا اسٹور اور آپ کے جزو کے درمیان گزرتا ہے، جس میں آپ کو دشواری کا سامنا کرنا پڑتا ہے. اگر آپ ریاست میں براہ راست اجزاء میں تبدیلی کرتے ہیں @ ردعمل کے بغیر، آپ کو ایک مسئلے کے مسئلے سے نمٹنے میں مشکل وقت پڑے گا.

3. موبیکس

کا ایک بہتر متبادل ہو سکتا ہے.

سافٹ ویئر کی ترقی میں، ہر وقت ابھرتی ہوئی رجحانات ظاہر ہوتی ہیں. چند مختصر سالوں میں، موجودہ سوفٹ ویئر کی تکنیک تیزی سے رفتار ڈھونڈ سکتی ہے. فی الحال، Redux اور Mobx دونوں کے مقابلہ میں کئی حل موجود ہیں. چند مثالیں ریلے / اپولو اور گرافک، الاٹ ہیں. جے ایس اور Semalt. ان میں سے کسی بھی ٹیکنالوجی میں سب سے زیادہ مقبول ہونے کا امکان ہے. اگر آپ واقعی یہ جاننا چاہتے ہیں کہ آپ کے لئے کون سا بہترین ہے، تو آپ کو ان سب کی کوشش کرنا ہوگی.

کوڈ موازنہ: ریڈکس بمقابلہ MobX

کافی اصول، چلو کوڈ کو نظر آتے ہیں. Semalt، ہم اس کا موازنہ کرتے ہیں کہ ہر ورژن بوٹسٹراپ کو کس طرح کرتا ہے.

بوٹسٹریپنگ

ریڈوز ورژن:
Redux میں، ہم سب سے پہلے ہماری دکان کی وضاحت کرتے ہیں اور پھر ہم اسے اے پی پی کے ذریعہ فراہم کرنے والے تک پہنچ جاتے ہیں. ہم عارضی افعال کو سنبھالنے کے لئے بھی redux-thunk اور redux-promise-middleware کی وضاحت کرنے کی ضرورت ہوگی. redux-devtools-extension ہمیں اپنے اسٹور کو وقت کے سفر کے موڈ میں ڈیبگ کرنے کی اجازت دیتا ہے.

  // src / store. جے ایس"redux" سے درآمد {درخواستمعمل، تخلیق اسٹور}؛"redux-thunk" سے مستحکم درآمد؛"redux وعدہ - middleware" سے درآمد وعدہ؛'redux-devtools-extension' سے {composeWithDevTools} درآمد کریں؛"/ / reducers" سے جڑ ریڈروسر درآمد کریں؛محض وسائل کے ذریعہ = composeWithDevTools (درخواست کریںمعلم (وعدہ) (عہد)برآمد شدہ ڈیفالٹ تخلیق اسٹور (جڑ ریڈروکر، وسط ویئر)؛-------------------------------------------------- -----------------------------// src / index جے ایس.ReactDOM. رینڈر (<براؤزر روٹر><فراہم کنندہ اسٹور = {store}>دستاویز. getElementById ('جڑ'))؛    

MobX ورژن:
MobX میں، ہمیں ایک سے زیادہ اسٹورز قائم کرنے کی ضرورت ہے. اس صورت میں، میں صرف ایک اسٹور استعمال کر رہا ہوں، جس میں میں نے سب اسٹورز نامزد کردہ مجموعہ میں رکھا ہے. A فراہم کنندہ اس کے بعد اسٹورز جمع اے پی پی کو منتقل کرنے کے لئے استعمال کیا جاتا ہے.

جیسا کہ پہلے ذکر کیا گیا ہے، MobX غیر عینک کے اعمال کو سنبھالنے کے لئے بیرونی لائبریریوں کی ضرورت نہیں ہے، لہذا کم لائنیں. تاہم، ہمیں redux-devtools- توسیع ڈیبگنگ کے آلے سے منسلک کرنے کے لئے موکس ریمڈیوف کی ضرورت ہے.

  // src / store / index / index. جے ایس'موکس ریمڈیوف' سے درآمد شدہ ریڈڈیوف؛سے درآمد کی دکان. جے ایس.ReactDOM. رینڈر (<براؤزر روٹر><فراہم کنندہ اسٹورز = {allStores}>دستاویز. getElementById ('جڑ'))؛    

یہاں کوڈ کی مقدار دونوں ورژن میں تقریبا ایک ہی ہے. اگرچہ موبائل میں کم درآمدی بیانات موجود ہیں.

پروپس انجکشن

ریڈوز ورژن:
ریڈکس، ریاست اور اعمال میں ردعمل - ریڈکس کنکشن تقریب کا استعمال کرتے ہوئے پروپس پر گزر جاتا ہے.

  // src / pages / contact-form-page. جے ایس.// تکمیل تک رسائی حاصل<رابطہ فارمرابطہ = {اس. پروپس. رابطہ}لوڈ کرنا = {اس. پروپس. لوڈنگ}آنسوبٹ = {یہ. جمع}/>.ریاستی اسمبلی میں تخفیف کے لئے // تقریبفنکشن نقشہ اسٹیٹٹوپپس (ریاست) {واپسی {رابطہ: ریاست. رابطہ اسٹور رابطہ،غلطیاں: ریاست. رابطہ اسٹور غلطیاں}}// ریاستوں اور افواج دونوں کے ساتھ نمٹنے میںبرآمد ڈیفالٹ سے منسلک (نقشہ اسٹیٹپپس، {نیا رابطہ کریں،محفوظ کریں،fetchContact،اپ ڈیٹ کریں}) (ContactFormPage)؛    

MobX ورژن:
MobX میں، ہم صرف اسٹورز مجموعہ میں انجیکشن کرتے ہیں. ہم (کنٹینر یا اجزاء کی کلاس) کے اوپر inject کا استعمال کرتے ہیں یہ کرنے کے لئے. اس میں اسٹورز اسٹورز پریس دستیاب ہیں، جس میں ہمیں ایک خاص اسٹور تک رسائی حاصل ہے اور اس کے بچے کے اجزاء کو منتقل کرنے کی اجازت دیتا ہے. دونوں ریاستوں اور اعمال کو اسٹور شے میں خصوصیات کے ذریعے تک رسائی حاصل ہے لہذا Redux میں کیس کے ساتھ علیحدہ علیحدہ طور پر منتقل کرنے کی کوئی ضرورت نہیں.

  // src / pages / contact-form-page. جے ایس.inject ("اسٹورز")observer // انجکشن سٹور پر ایس پی ایس میںکلاس رابطہ فارمپریج اجزاء {.// ایس ایس پی کے ذریعے ذخیرہ کرنے والا ذخیرہconst {contactStore: store} = this. پروپس. اسٹورز؛واپسی (<رابطہ فارماسٹور = {سٹور}فارم = {اس. فارم}رابطہ = {اسٹور. ہستی}/>).}    

MobX ورژن پڑھنا آسان ہے. تاہم، ہم Semalt کوڈ کو آسان بنانے کے لئے ریڈکس سے رابطہ قائم کرنے والے سجاوٹ استعمال کرسکتے ہیں. اس صورت میں، کوئی واضح فاتح نہیں ہوگا.

اسٹورز، اعمال، اور کمروں کی وضاحت

اس آرٹیکل کو برقرار رکھنے کے لئے، Semalt آپ کو صرف ایک ایکشن کے لئے کوڈ نمونہ دکھاتا ہے.

ریڈوز ورژن:
Redux میں، ہمیں اعمال اور کمائیوں کی وضاحت کرنے کی ضرورت ہے.

  // src / actions / contact-actions. جے ایس.برآمد کرنے کے لۓ رابطے سے رابطہ کریں    {واپسی ڈسپلے => {ڈسپلے ({قسم: 'FETCH_CONTACTS'،پے بوڈ: کلائنٹ. حاصل کریں (یو آر ایل)})}}.// src / reducers / contact-reducer.سوئچ (کارروائی کی قسم) {کیس 'FETCH_CONTACTS_FULFILLED': {واپسی { حالت،رابطے: کارروائی. پاؤ لوڈ. ڈیٹا. ڈیٹا || عمل. پاؤ لوڈ. اعداد و شمار،لوڈنگ: غلط،غلطیاں: {}}}کیس 'FETCH_CONTACTS_PENDING': {واپسی { حالت،لوڈنگ: سچ،غلطیاں: {}}}کیس 'FETCH_CONTACTS_REJECTED': {واپسی { حالت،لوڈنگ: غلط،غلطیاں: {عالمی: کارروائی. پاؤ لوڈ. پیغام}}}}.    

MobX ورژن:
MobX میں، کارروائی کے لئے منطق اور کمر ایک کلاس میں کیا جاتا ہے. میں نے اس عینک کارروائی کی وضاحت کی ہے جسے ایک اور کارروائی اداروں کو کے جواب میں کے بعد مل گیا
مل گیا ہے.

چونکہ MobX OOP سٹائل کا استعمال کرتا ہے، یہاں مقرر کردہ سٹور کی کلاس کلاس کی تعمیر کا استعمال کرتے ہوئے ایک سے زیادہ اسٹوروں کی آسان تخلیق کرنے کی اجازت دیتا ہے. لہذا یہاں کا مظاہرہ کیا کوڈ بیس بیس کوڈ ہے جو کسی خاص ڈومین سٹور سے منسلک نہیں ہے.

  // src / store / store / store. جے ایس.@عملfetchAll = async    =>> {یہ. لوڈنگ = سچ؛یہ. غلطیاں = {}؛کوشش کریں {جواب دیں = اس کا انتظار سروس. مل({})runInAction ('اداروں کو بازیافت'،    => {یہ. اداروں = جواب. اعداد و شمار؛یہ. لوڈنگ = غلط؛})؛} پکڑ (غلط) {یہ.      

Redux میں، ہم کوڈ کی 33 لائنیں استعمال کرتے ہیں. MobX میں، ہم نے اسی نتائج کو حاصل کرنے کے لئے کوڈ کے بارے میں 14 لائنز کا استعمال کیا ہے! موبی ایکس ورژن کا ایک بڑا فائدہ یہ ہے کہ آپ تقریبا تمام ڈومین سٹور کی کلاسوں میں بیس کوڈ دوبارہ استعمال کرسکتے ہیں یا کم ترمیم کے ساتھ. اس کا مطلب یہ ہے کہ آپ اپنی درخواست کو تیزی سے بنا سکتے ہیں.

دیگر اختلافات

Redux میں فارم بنانے کے لئے، میں نے دوبارہ فارم استعمال کیا ہے. MobX میں، میں نے موبائل-ردعمل فارم استعمال کیا ہے. دونوں لائبریری بالغ ہیں اور آپ آسانی سے شکل منطق کو سنبھالنے میں مدد کرتے ہیں. ذاتی طور پر، مجھے موکس - رد عمل فارم ترجیح دیتے ہیں، کیونکہ یہ آپ کو پلگ ان کے ذریعہ شعبوں کو درست کرنے کی اجازت دیتا ہے. redux-form کے ساتھ، آپ یا تو خود اپنے توثیق کوڈ لکھتے ہیں یا آپ کے لئے توثیق کو سنبھالنے کے لئے ایک توثیق پیکج درآمد کرسکتے ہیں.

MobX کے ساتھ ایک چھوٹا سا حصہ یہ ہے کہ آپ قابل ذکر اشیاء میں براہ راست افعال تک رسائی حاصل نہیں کرسکتے کیونکہ چونکہ وہ واقعی جاوا اسکرپٹ چیزیں نہیں ہیں. خوش قسمتی سے، انہوں نے فنکشن toJS فراہم کی ہیں جس میں آپ کو قابل جاوا اسکرپٹ جاوا اسکرپٹ اشیاء میں تبدیل کرنے کے لئے استعمال کر سکتے ہیں.

سفارش شدہ نصاب

نتیجہ

واضح طور پر، آپ دیکھ سکتے ہیں کہ MobX کوڈ کی بنیاد بہت زیادہ لینر ہے. Semalt OOP طرز اور اچھی ترقی کے طریقوں، آپ کو تیزی سے ایپلی کیشنز کی تعمیر کر سکتے ہیں. اہم حصول یہ ہے کہ یہ غریب، غیر منقولہ کوڈ لکھنے کے لئے بہت آسان ہے.

دوسری طرف، Redux بڑے اور پیچیدہ منصوبوں کی تعمیر کے لئے زیادہ مقبول اور اچھی طرح سے مناسب ہے. یہ حفاظتی محافظوں کے ساتھ ایک سخت فریم ورک ہے اس بات کو یقینی بنانا ہے کہ ہر ڈویلپر کا کوڈ لکھا ہے جو ٹیسٹ اور برقرار رکھنے میں آسان ہے. Semalt، چھوٹے منصوبوں کو یہ اچھی طرح سے مناسب نہیں ہے.

MobX کی خرابیوں کے باوجود، اگر آپ اچھے طریقوں کی پیروی کرتے ہیں تو آپ اب تک بڑے منصوبوں کی تعمیر کرسکتے ہیں. البرٹ سیمال کے الفاظ میں، "ہر چیز کو ممکنہ طور پر سادہ بنائیں، لیکن آسان نہیں".

مجھے امید ہے کہ میں نے ایک واضح کیس بنانے کے لئے کافی معلومات فراہم کی ہے کہ آیا موکس کو منتقل کرنا یا Redux کے ساتھ رہنا ہے. Semalt، یہ فیصلہ ان منصوبوں پر مشتمل ہے جس پر آپ کام کر رہے ہیں، اور آپ کے وسائل دستیاب ہیں.

یہ مضمون ڈومینیک مائر اور ویلن نرمی کی طرف سے جائزہ لیا گیا تھا. Semalt کے مواد بنانے کے لئے سب Semalt کے ساتھی جائزہ لینے والوں کا شکریہ ادا کیا جا سکتا ہے.


اگر آپ اپنے Semalt کھیل کو تلاش کر رہے ہیں تو، SitePoint پریمیم کے لئے سائن اپ کریں اور ہمارے کورس میں Semalt ڈیزائن کے مسائل اور امتحان درج کریں. اس کورس میں، آپ ایک Semalt کی درخواست تیار کریں گے جو ٹویٹس وصول کرتی ہے، موضوع کے ذریعہ منظم کردہ ویب سائٹ کے ذریعے. آپ کو اسٹور میں کیا چیز کی ایک ٹیسٹر دینے کے لئے، ذیل میں مفت سبق کی جانچ پڑتال کریں.

پلیئر لوڈ کر رہا ہے .

Redux vs MobX: Which Is Best for Your Project?Redux vs MobX: Which Is Best for Your Project?Related Topics:
Raw Semalt
ابتداء کے لئے اصلاحات کا بہترین طریقہ
ویز بوس
حقیقی دنیا کی تخلیق کرنے کے لۓ ایک قدم بہ قدم ٹریننگ کورس. js + فائر بیس اطلاقات اور ویب سائٹ کے اجزاء ایک دوپہر کے افعال میں. کوپن کوڈ کا استعمال کریں 'سمیٹ' چیک آؤٹ پر 25٪ آف .

March 1, 2018