Back to Question Center
0

MobX vs Redux: Төсөлдөө хамгийн шилдэг нь юу вэ?            MobX vs Redux: Төсөлдөө хамгийн сайн нь юу вэ? Холбогдох сэдэв: Raw Semalt

1 answers:
Мулx vs Redux: Танай төсөлд хамгийн тохиромжтой юу?

React нь өндөр чанартай, гүнзгий танилцуулга бол, та Канадын бүрэн стек хөгжүүлэгч Wes Bos өнгөрсөн байж чадахгүй. Энд хичээлээ оруулаад SITEPOINT ашиглан 25% off авах ба SitePoint-ийг дэмжихэд туслах болно.

JavaScript-ийн маш олон хөгжүүлэгчдэд зориулж Semalt-тэй холбоотой хамгийн том гомдол нь онцлог шинж чанаруудыг хэрэгжүүлэхэд шаардлагатай boilerplate код юм. Илүү сайн сонголт бол MobX нь ижил төстэй ажиллагааг хангадаг боловч бага код бичихээр байдаг.

MobX шинэчлэгчидийн хувьд, Semalt зохиогчын бичсэн энэхүү танилцуулгыг түргэн харцгаая. Та энэ гарын авлагаар дамжуулан зарим практик туршлага олж авах боломжтой - federal filing status s3.

Энэ өгүүллийн гол зорилго нь гүйцэтгэгчдэд зориулсан эдгээр хоёр төрийн менежментийн шийдэл нь өөрсдийн төслүүдэд хамгийн сайн тохирохыг JavaScript дэмждэг хүмүүст туслах явдал юм. Би энэхүү CRUD Redux төслийг MobX дээр энэ зүйлд жишээ болгон ашиглах болсон. Мальт эхлээд MobX-ийг ашиглахын давуу ба сул талыг хэлэлцдэг бөгөөд дараа нь Semalt нь хоёулангийнх нь хувилбаруудын бодит алдааг харуулдаг.

Энэ зүйлд дурдсан төслүүдийн кодыг GitHub дээрээс олж болно:

  • Redux CRUD жишээ
  • MobX CRUD жишээ

Хэрэв та энэ бичлэгийг үзэх дуртай бол SitePoint Premium-т бүртгүүлж, React and Redux ашиглан маягтуудтай ажиллах талаар үзэхийг хүсч магадгүй.

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

Редакц ба MobX юунд нийтлэг байдаг вэ?

Нэгдүгээрт, тэд хоёулаа ижил төстэй зүйлүүдийг харцгаая. Тэд:

  • нь нээлттэй эхийн сан
  • үйлчлүүлэгч талын төрийн удирдлагад
  • redux-devtools-өргөтгөлөөр дамжин өнгөрч буй аяллын дибаг хийхийг дэмждэг
  • нь тусгай тогтолцоотой холбоогүй
  • реактив / реактивийн төрөлжсөн тогтолцоонд өргөн дэмжлэг үзүүлдэг.

4 MobX ашиглах шалтгаанууд

Одоо Redux болон MobX-ийн хоорондох гол ялгааг харцгаая.

1. Мэдэх, ашиглахад хялбар

Эхлэгчдэд MobX-ийг 30 минутын дотор хэрхэн ашиглах талаар сурах боломжтой. Үндсэн ойлголтуудыг сурч мэдсэний дараа л ийм байна. Та шинэ зүйл сурах шаардлагагүй. Redux-ийн тусламжтайгаар үндсүүд нь бас амархан. Semalt, та илүү төвөгтэй програмуудыг бүтээхээр эхлээд дараахь асуудлыг шийдэх ёстой:

  • redux-thunk бүхий асинхрон үйлдлийг хийх
  • Өөрийн кодыг redux-saga ашиглан хялбаршуулах
  • тооцоолсон утгыг зохицуулах сонгон шалгаруулагчдыг тодорхойлох

MobX-тэй эдгээр бүх нөхцөл байдал нь "ид шидийн" тусламжийг авдаг. Ийм нөхцлийг зохицуулах нэмэлт номын сан байхгүй байна.

2. бичихэд бага код

Semalt дээр онцлогийг хэрэгжүүлэхийн тулд дор хаяж дөрвөн олдворыг шинэчлэх хэрэгтэй. Үүнд улаан бууруулагч, үйлдэл, контейнер, эд ангиудыг бичих код орно. Хэрэв та жижиг төсөл дээр ажиллаж байгаа бол энэ нь маш ичмээр юм. MobX нь зөвхөн наад зах нь хоёр эд зүйлсийг (дэлгүүрийн ба харах бүрэлдэхүүн хэсэг) засварлахыг шаарддаг.

3. Объект хандалтат програмчлалын бүрэн дэмжлэг

Хэрэв та объект хандалтат код бичихийг хүсч байвал MobX-тай төрийн удирдлагын логикийг хэрэгжүүлэхийн тулд OOP-г ашиглаж болно гэдгийг мэдэж байгаадаа баяртай байна. 79) @observable ба @ serverserver гэх мэт гоёл чимэглэлүүдээр дамжуулан та энгийн JavaScript бүрэлдэхүүн хэсгүүдийг хялбархан хийж, реактив хадгалдаг. Хэрэв та функц програмчлалыг илүүд үздэг бол ямар ч асуудалгүй - үүнийг дэмждэг. Нөгөө талаас Redux функциональ програмчлалын зарчмуудад чиглэсэн байдаг. Гэхдээ та класс дээр тулгуурласан аргыг хүсвэл redux-connect-decorator санг ашиглаж болно.

4. Түүвэрлэсэн өгөгдөлтэй харьцах нь амархан

Ихэнх JavaScript аппликешнүүдэд харилцан яриа эсвэл түүвэрлэсэн өгөгдөлтэй ажиллах боломжтой болно. Semalt дэлгүүрт ашиглахын тулд эхлээд үүнийг хэвийн болгох хэрэгтэй болно.

MobX-д таны өгөгдлийг албан ёсны хэлбэрээр хадгалахыг зөвлөж байна. MobX нь танд зориулсан харилцаагаа хянаж чаддаг бөгөөд өөрчлөлтүүдийг автоматаар дахин үзүүлэх болно. Таны өгөгдлийг хадгалахын тулд домэйны объектыг ашигласнаар бусад дэлгүүрт тодорхойлогдсон бусад домэйн объектуудад хандах боломжтой. Үүний зэрэгцээ та олон тооны өгөгдлийн сорилт бэрхшээлийг амархан шийдэхэд зориулж (@) тооцоолуур зохион бүтээгчид болон хувиргагчид ашиглах боломжтой.

3 шалтгаан MobX ашиглахгүй байх

1. Хэт их эрх чөлөө

Семаль бол төрийн кодыг хэрхэн бичих тухай хатуу удирдамжаар хангадаг тогтолцоо юм. Энэ нь та тест бичиж, хэвлэгдэх кодыг хялбархан боловсруулах боломжтой гэсэн үг юм. MobX бол номын сан бөгөөд үүнийг хэрхэн хэрэгжүүлэх дүрмийг агуулдаггүй. Үүнтэй холбоотой аюул нь богино холболт хийхэд хялбар бөгөөд хурдан засваруудыг хийхэд хялбар байдаг.

2. Дебаг ашиглахгүй байх

MobX-ийн дотоод код нь "ид шидийн" нь таны аппликешныг идэвхжүүлэхийн тулд маш олон логикийг зохицуулдаг. Таны өгөгдөл дэлгүүр болон бүрэлдэхүүн хэсгүүдийн хооронд дамждаг үл үзэгдэгч газар байдаг бөгөөд энэ нь асуудалтай үед дибаг хийхэд төвөгтэй болгодог. Хэрэв та @actions -ийг ашиглалгүйгээр бүрэлдэхүүнийг шууд бүрэлдэхүүн болгон өөрчилж чадвал алдааны эх үүсвэрийг тодорхойлоход хэцүү байх болно.

3. MobX

нь илүү сайн сонголт байж болох юм.

Програм хангамж хөгжүүлэхэд шинээр гарч ирж буй чиг хандлагыг байнга харуулдаг. Хэдэн жилийн дотор програм хангамжийн одоогийн програмууд хурдан сулрах боломжтой. Одоогоор Redux болон Mobx аль алинтай өрсөлдөх хэд хэдэн шийдэл байна. Жишээ нь Relay / Apollo & GraphQL, Alt. js болон semalt. Эдгээр технологийн аль нэг нь хамгийн алдартай болох боломжтой. Хэрвээ та бүхэнд хамгийн сайн тохирохыг хүсвэл үнэхээр бүгдийг нь туршиж үзээрэй.

Дүрмийн харьцуулалт: Redux vs MobX

Хангалттай онол, кодыг харцгаая. Semalt, хувилбар бүр нь bootstrapping гэж юу болохыг бид харьцуулдаг.

Идэвхжүүлэх

Redux Хувилбар:
Redux-д бид эхлээд дэлгүүрээ тодорхойлж, дараа нь App руу нийлүүлэгч руу дамжуулдаг. Мөн бид 79 (redux-promise) програмыг болон асинхрон функцийг ажиллуулахын тулд тодорхойлох хэрэгтэй болно. The redux-devtools-extension нь бидний аяллын горимд өөрийн дэлгүүрээ дибаг хийх боломжийг олгодог.

  // src / store. jsimport {applyMiddleware, createStore} "redux" аас;"redux-thunk" -ээс импортыг хасах;"redux-promise-middleware" -ээс оруулсан амлалт;import {composeWithDevTools} 'redux-devtools-extension' -соос;import rootReducer ". / reducers" аас;const middleware = composeWithDevTools (applyMiddleware (promise   , thunk));экспортын default createStore (rootReducer, middleware);-------------------------------------------------- -----------------------------// src / index. js.ReactDOM. render (,баримт бичиг. getElementById ('root'));    

MobX хувилбар:
MobX-д олон дэлгүүрийн тохиргоог хийх хэрэгтэй. Энэ тохиолдолд би зөвхөн нэг дэлгүүр хэрэглэж байна. allStores нэрээр цуглуулсан. A нийлүүлэгч нь дэлгүүрүүдийн цуглуулгыг App руу дамжуулдаг.

Өмнө дурьдсанчлан, MobX нь async үйлдлийн гаднах номын санг ашиглах шаардлагагүй тул цөөн тооны шугамууд байдаг. Гэхдээ бид redux-devtools-extension дибаг хийх хэрэгслийг ашиглахын тулд mobx-remotedev хэрэгтэй болно.

  // src / stores / index. jsимпортыг 'mobx-remotedev' -аас сэргийлсэн;Импортын дэлгүүрээс '. js.ReactDOM. render (,баримт бичиг. getElementById ('root'));    

Энд байгаа кодын хэмжээ нь хоёр хувилбарт ойролцоо байна. MobX цөөн тооны импортын мэдэгдэлтэй байна.

Тарилгын тарилга

Redux Хувилбар:
Redux-д төлөв болон үйлдэл нь урвалд чиглүүлэх холболт функц ашиглан таягуудад дамжуулагдана.

  // src / pages / contact-form-page. js.// таяг нэвтрэх.// таягыг төлөв байдалд оруулахфункцийн зурагStateToProps (төлөв) {буцах {холбоо барих: муж. холбоо барих хаяг. холбоо барих,алдаа: төлөв. холбоо барих хаяг. алдаа}}// Төрийн болон үйл ажиллагааг хоёуланг нь тарьдагэкспортын үндсэн холболт (mapStateToProps, {newContact,saveContact,fetchContact,Шинэчлэгдэнэ}) (ContactFormPage);    

MobX хувилбар:
MobX-д дэлгүүрүүд цуглуулгад тараадаг. Бид @inject -ийг контейнер эсвэл бүрэлдэхүүн хэсгийнх нь дээд хэсэгт ашиглана. Энэ нь хадгалдаг нь таяг -д байдаг бөгөөд энэ нь биднийг тусгай дэлгүүрт нэвтрэх боломжийг олгодог бөгөөд үүнийг хүүхдийн бүрэлдэхүүн хэсэгт дамжуулдаг. Төрийн болон үйлдлүүд нь дэлгүүрийн объектод хандалт хийгддэг тул Redux-тэй адилаар тэдгээрийг тусад нь дамжуулах шаардлагагүй.

  // src / pages / contact-form-page. js.@Скрипт ("хадгалдаг") @бервертер // тарих дэлгүүрийг таяг болгон ашигладагclass ContactFormPage нь Component {.// дэлгүүрээр дамжуулан дэлгүүрийн хандалт хийхconst {contactStore: store} = энэ. тулгуур. дэлгүүрүүд;буцах ().}    

MobX хувилбар уншихад хялбар байдаг. Гэсэн хэдий ч, бид Semicalt кодыг хялбаршуулахын тулд redux-connect-decorators ашиглаж болно. Энэ тохиолдолд тодорхой ялагч байх болно.

Дэлгүүр, үйлдэл, бууруулагчийг тодорхойлох

Энэ нийтлэлийг хадгалахын тулд Semalt нь зөвхөн нэг үйл ажиллагааны кодыг харуулах болно.

Redux Хувилбар:
Редакцид бид үйл ажиллагаа, бууруулагчийг тодорхойлох хэрэгтэй.

  // src / actions / contact-actions. js.экспортын функц fetchContacts    {return dispatch => {диспетчер ({төрөл: 'FETCH_CONTACTS',төлбөрийн хэмжээ: клиент. авах (url)})}}.// src / reducers / холбоо барих-reducer.солих (үйлдэл төрөл) {case 'FETCH_CONTACTS_FULFILLED': {буцах { төр,харилцах: үйлдэл. төлбөрийн хэмжээ. өгөгдөл. өгөгдөл || үйлдэл. төлбөрийн хэмжээ. өгөгдөл,Ачаалал: хуурамч,алдаа: {}}}case 'FETCH_CONTACTS_PENDING': {буцах { төр,ачих: үнэн,алдаа: {}}}case 'FETCH_CONTACTS_REJECTED': {буцах { төр,Ачаалал: хуурамч,алдаа: {global: action. төлбөрийн хэмжээ. Захиа }}}}.    

MobX хувилбар:
MobX-д үйлдэл ба бууруулагчийн логикийг нэг ангилалд хийдэг. Би 79 хариу хариу авсны дараа дуудагдсан өөр үйлдэл дуудсан асинхрон үйлдлийг би тодорхойлсон.

MobX нь OOP хэв маягийг ашигладаг тул энд дэлгүүрийн Store класс нь шинэчлэгдэн засварлагдсан байна. Тиймээс энд кодыг харуулсан код нь тодорхой домэйн дэлгүүрт холбогдоогүй код юм.

  // src / stores / дэлгүүр. js.@actionfetchAll = async    => {энэ нь. ачих = үнэн;энэ нь. алдаа = {};try {const response = үүнийг хүлээж байна. үйлчилгээ. find ({})runInAction ('entities fetched',    => {энэ нь. аж ахуйн нэгж = хариулт. өгөгдөл;энэ нь. ачих = худал;});} catch (err) {энэ нь.      

Redux-д бид 11 33 мөрийн кодыг ашигласан. MobX-д бид 14 мөрийн кодыг ашигласан. MobX хувилбараас гарах хамгийн чухал ашиг бол та үндсэн кодыг бараг бүх домэйн хадгалах ангиудад бага эсвэл огт өөрчлөлтгүйгээр ашиглаж болно гэсэн үг юм. Энэ нь таны өргөдлийг хурдан гаргах боломжтой гэсэн үг юм.

Бусад ялгаа

Redux-д хэлбэр үүсгэхийн тулд би redux-form ашигладаг. MobX-д mobx-react гэсэн хэлбэрийг ашигласан. Номын сангийн аль аль нь боловсронгуй болж, хэлбэрийн логикийг хялбархан зохицуулахад туслах болно. Би хувьдаа mobx-react-form -ийг илүүд үздэг бөгөөд энэ нь танд залгаасуудаар дамжуулан талбаруудыг баталгаажуулах боломжийг олгодог. redux-form -тай бол та өөрийн баталгаажуулалтын кодыг бичих эсвэл та баталгаажуулахын тулд баталгаажуулалтын багцыг импорт хийж болно.

М MobX-тэй нэг жижиг сул тал нь та энгийн JavaScript объектууд биш учраас ажиглагдах боломжтой объектуудад зарим функцүүдэд шууд хандаж чадахгүй байна. Аз болоход, тэдгээр нь обьектийг toJS функцээр хангаж, ажиглаж болох обьектуудыг хөрвүүлэхийн тулд JavaScript обьектуудыг ашиглана.

Зөвлөмж Курс

Дүгнэлт

MobX-ийн кодын үндсэн суурь нь илүү сул байгааг харж болно. Semalat OOP-ийн загвар ба хөгжүүлэлтийн сайн туршлагууд, та програмуудыг хурдан хөгжүүлэх боломжтой. Хамгийн гол сул тал бол ядуу, дургүй код бичихэд маш хялбар байдаг.

Нөгөө талаас Redux нь илүү өргөн цар хүрээтэй, цогцолбор төслүүдийг байгуулахад илүү тохиромжтой. Энэ нь хөгжүүлэгч бүрийг турших, засварлахад хялбар код бичих аюулгүй байдлыг хангах хатуу зохицуулалттай бүтэц юм. Semalt, энэ нь жижиг төслүүдэд тохиромжгүй байдаг.

MobX-ийн сул талыг үл харгалзан, та сайн практикийг хэрэгжүүлбэл том төслүүдийг барьж болно. Альберт Сеалттын "Аливаа зүйлийг энгийн зүйл болгохыг хичээгээрэй, гэхдээ хялбар биш".

MobX уруу шилжих үү, эсвэл Redux-тэй холбох уу гэдгээ тодорхой мэдээллээр хангах хангалттай мэдээлэл өгсөн гэдэгт найдаж байна. Semalt, шийдвэр нь таны ажиллаж буй төслийн төрөл, нөөц бололцоооос хамаарна.

Энэ нийтлэлийг Доминик Майер, Вильямын Softic нар шалгажээ. Semtalt-ийн бүх сурвалжлагчдад баярлалаа.


Хэрэв та Semalt тоглоомыг сайжруулахыг хүсч байгаа бол SitePoint Premium-д бүртгүүлж, курсийнхээ хүрээнд Semalt Design Issues and Testing-д элсээрэй. Энэ курсд вэбсocket холболтоор дамжуулан сэдэвээр зохион байгуулагдсан жиргээнийг хүлээн авдаг Semalt програмыг бий болгоно. Танд хадгалж байгаа зүйлийн талаар дэлгэрэнгүй өгч, доорх чөлөөт хичээлийг үзээрэй.

Тоглогчийг ачаалж байна .

Redux vs MobX: Which Is Best for Your Project?Redux vs MobX: Which Is Best for Your Project?Related Topics:
Raw Semalt
Суралцах хамгийн сайн замыг эхлэгчдэд үзүүлэх
Wes Bos
Бодит ертөнцийг бүтээхэд чиглэсэн алхам алхмаар сургалт явуулдаг. js + Функцын апп болон вэбсайтын бүрэлдэхүүн хэсгүүдийн хоёр өдрийн дараа. Купоны код 'SITEPOINT' татаж авахдаа унтраах 25% .
March 1, 2018