Back to Question Center
0

Redux vs MobX: Sing paling apik kanggo Proyek Panjenengan?            Redux vs MobX: Sing paling apik kanggo Proyek Panjenengan? Related Topics: Raw Semalt

1 answers:
Redux vs MobX: Sing paling apik kanggo Proyek Panjenengan?

Kanggo ngenalaken babagan React, sampeyan ora bisa nglangkungi pangembang lengkap stack Kanada Wes Bos. Coba tuju kene, lan gunakake kodhe SITEPOINT kanggo njaluk 25% mati lan mbantu support SitePoint.

Kanggo akeh pangembang JavaScript, keluhan sing paling gedhe karo Semalt yaiku jumlah kode boilerplate sing dibutuhake kanggo ngleksanakake fitur. Alternatif sing luwih apik yaiku MobX sing nyedhiyakake fungsionalitas sing padha nanging kanthi kode sing luwih cilik kanggo nulis.

Kanggo pemula MobX, cetha sinau ing introduksi iki sing ditulis dening pencipta Semalt. Sampeyan uga bisa nggarap tutorial iki kanggo ngerteni sawetara pengalaman praktis.

Tujuan saka artikel iki kanggo mbantu para pangembang JavaScript milih salah sijine solusi manajemen negara kasebut sing paling apik kanggo proyek kasebut. Aku wis migrasi proyek Redux CRUD iki menyang MobX kanggo digunakake minangka conto ing artikel iki. Semalt kawitan rembugan babagan pros lan cons nggunakake MobX, lan banjur Semalt nduduhake sampel kode nyata saka loro versi kanggo nuduhake prabédan.

Kode kanggo proyèk kasebut ing artikel iki bisa ditemokake ing GitHub:

  • Redux CRUD example
  • MobX CRUD example

Yen seneng posting iki, sampeyan uga pengin mlebu kanggo SitePoint Premium lan nonton kursus kita nggarap formulir nggunakake React lan Redux.

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

Apa Redux lan MobX Duwe Umum?

dhisik, ngerteni apa sing wis kedadeyan. Padha:

  • yaiku perpustakaan sumber-sumber
  • nyedhiyakake manajemen negara sisih
  • support debugging wektu-lelungan liwat redux-devtools-extension
  • ora kaiket karo kerangka spesifik
  • nduweni dukungan akeh kanggo kerangka Native React / React.

4 Alasan Gunakake MobX

Saiki katon ing beda utama antarane Redux lan MobX.

1. Gampang sinau lan gunakake

Kanggo pamula, sampeyan bisa sinau migunakake MobX ing 30 menit. Yen sampeyan sinau dasar, mesthine. Sampeyan ora perlu sinau apa-apa sing anyar. Kanthi Redux, prasaja gampang banget. Semalat, nalika sampeyan miwiti mbangun aplikasi luwih rumit, sampeyan kudu nangani:

  • nangani tindakan async kanthi redux-thunk
  • nyederhanakake kode kanthi redux-saga
  • sing mesthine milih kanggo nangani nilai sing dihasilake, lan sebagéyan

Kanthi MobX, kabeh kahanan iki dijaga kanthi "ajaib". Sampeyan ora butuh tambahan perpustakaan kanggo nangani kahanan kasebut.

2. Kurang nulis kode

Kanggo ngleksanakake fitur ing Semalt, sampeyan kudu nganyari paling ora papat artefak. Iki kalebu nulis kode kanggo reducers, tumindak, kontaner lan komponen. Iki luwih ngganggu yen sampeyan lagi nggarap proyek cilik. MobX mung mbutuhake sampeyan nganyari paling ora rong artefak (ing sisih nyimpen lan komponen tampilan).

3. Dhukungan penuh kanggo pemrograman berorientasi obyek

Yen luwih seneng nulis kode oriented obyek, sampeyan bakal kepengin ngerti sampeyan bisa nggunakake OOP kanggo ngleksanakake logika manajemen negara karo MobX. Liwat nggunakake dekorator kayata @observable lan @verserver , sampeyan bisa kanthi gampang nggawe komponèn JavaScript lan toko kanthi reaktif. Yen sampeyan seneng program fungsional, ora ana masalah - sing uga didhukung. Redux, ing sebagéyan liya, migunani banget marang prinsip pemrograman fungsional. Nanging, sampeyan bisa nggunakake redux-connect-dekorator perpustakaan yen sampeyan pengin pendekatan kelas-based.

4. Nangani data nested gampang

Ing paling aplikasi JavaScript, sampeyan bakal nemokake dhewe nggarap data hubungan utawa nested. Kanggo bisa nggunakake kasebut ing toko Semalt, sampeyan kudu ngormalisasi pisanan.

Ing MobX, dianjurake kanggo nyimpen data ing wangun denormal. MobX bisa nglacak hubungan kanggo sampeyan, lan kanthi otomatis bakal menehi révisi. Kanthi nggunakake obyek domain kanggo nyimpen data, sampeyan bisa langsung mirsani obyek domain liyane sing ditemtokake ing toko liyane. Kajaba iku, sampeyan bisa nggunakake (@) dekorator lan modifikasi sing diduweni kanggo observable kanggo gampang ngrampungake tantangan data rumit.

3 Alasan Ora Gunakake MobX

1. Terlalu akeh kebebasan

Semalt minangka framework sing menehi pedoman sing ketat babagan carane nulis kode negara. Iki tegese sampeyan bisa kanthi gampang nulis tes lan berkembang kode maintainable. MobX minangka perpustakaan lan ora ana aturan babagan carane ngleksanakake. Bebaya karo iki yaiku gampang banget kanggo njupuk dalan trabasan lan ngapikake perbaikan cepet sing bisa nyebabake kode sing ora bisa dikendhaleni.

2. Hard to debug

Kode internal MobX "magically" nangani logika akeh kanggo nggawe aplikasi sampeyan reaktif. Ana area sing ora kasil ing ngendi data sampeyan mlebu ing antarane nyimpen lan komponèn, sing ndadekake angel debug nalika sampeyan duwe masalah. Yen sampeyan ngganti negara langsung ing komponen, tanpa nggunakake @actions , sampeyan bakal duwe wektu mbesuk pinpointing sumber bug.

3. Ana bisa dadi alternatif sing luwih apik kanggo MobX

Ing perkembangan piranti lunak, tren anyar muncul ing kabeh wektu. Ing sawetara taun cendhak, teknik piranti lunak saiki bisa cepet ngeculake momentum. Ing wayahe, ana sawetara solusi saingan karo Redux lan Mobx. Sawetara conto yaiku Relay / Apollo & GraphQL, Alt. js lan Semalt. Sembarang teknologi kasebut duweni potensi dadi paling populer. Yen sampeyan pengin ngerti sing paling apik kanggo sampeyan, sampeyan kudu nyoba kabeh.

Perbandingan Code: Redux vs MobX

Tentara cukup, ayo ningali kode kasebut. Semono, kita mbandhingake carane saben versi ora bootstrapping.

Bootstrapping

Redux Versi:
Ing Redux, kita pisanan nemtokake simpenan lan banjur dikirim menyang App liwat Panyedhiya . Kita uga kudu nemtokake redux-thunk lan redux-promise-middleware kanggo nangani fungsi asynchronous. Ing redux-devtools-extension ngidini kita debug panyimpenan kita ing mode wektu-lelungan.

  // src / store. jsngimpor {applyMiddleware, createStore} saka "redux";ngimpor saka "redux-thunk";ngimpor janji saka "redux-promise-middleware";ngimpor {composeWithDevTools} saka 'redux-devtools-extension';ngimpor rootReducer saka ". / reducers";const middleware = composeWithDevTools (applyMiddleware (promise   , thunk));export createStore default (rootReducer, middleware);-------------------------------------------------- -----------------------------// src / index. js.ReactDOM. nerjemahake (,dokumen. getElementById ('root'));    

MobX Versi:
Ing MobX, kita kudu nyiapake pirang-pirang toko. Ing kasus iki, aku nggunakake mung siji toko, kang aku wis diselehake ing koleksi kanthi jeneng allStores . A Provider banjur digunakake kanggo ngliwati koleksi toko menyang App .

Kaya sing kasebut sadurunge, MobX ora mbutuhake perpustakaan eksternal kanggo nangani aksi async, mula garis kurang. Nanging, kita mbutuhake mobx-remotedev kanggo nyambung menyang alat debugging redux-devtools-extension.

  // src / stores / index. jsngimpor remotedev saka 'mobx-remotedev';Impor Toko saka '. js.ReactDOM. nerjemahake (,dokumen. getElementById ('root'));    

Jumlah kode ing kene kira-kira padha ing versi kasebut. MobX durung duwe laporan impor luwih sithik.

Injeksi injeksi

Redux Versi:
Ing Redux, negara lan tumindak ditulari menyang peraga kanthi nggunakake fungsi reaksi redux sambung .

  // src / pages / contact-form-page. js.// ngakses peraga.// fungsi kanggo nyuntikake negara menyang peragafungsi mapStateToProps (negara) {balik {kontak: negara. contactStore. kontak,kasalahan: negara. contactStore. kasalahan}}// nyuntikake loro negara lan tindakan menyang propexport default connect (mapStateToProps, {newContact,saveContact,fetchContact,updateKontak}) (ContactFormPage);    

MobX Versi:
Ing MobX, kita mung nyuntik koleksi toko . Kita nggunakake @inject ing ndhuwur kelas wadhah utawa komponen kanggo nindakake iki. Iki nggawe toko sing ana ing alat peraga , sing bakal ngidini kita ngakses nyimpen tartamtu lan ngirim menyang komponen bocah. Loro-lorone negara lan tumindak bisa diakses liwat situs ing nyimpen obyek, supaya ora kudu dilebokake kanthi kapisah kaya kasus ing Redux.

  // src / pages / contact-form-page. js.@inject ("toko") @observer // injecting store into propskelas ContactFormPage ngluwihi Komponen {.// ngakses nyimpen liwat peragaconst {contactStore: store} = iki. prop. toko;bali ().}    

Versi MobX katon luwih gampang diwaca. Nanging, kita bisa nggunakake redux-connect-decorators kanggo nyederhanakake kode Semalt. Ing kasus kasebut, ora ana sing bakal menang.

Ngartèkaké toko, tumindak, lan ngurangi

Kanggo tetep artikel iki, Semalt nuduhake sampeyan sampel kode kanggo mung siji tumindak.

Redux Versi:
Ing Redux, kita kudu netepake tindakan lan reducers.

  // src / actions / contact-actions. js.fungsi ekspor fetchContacts    {bali dispatch => {dispatch ({Tipe: 'FETCH_CONTACTS',payload: client. njaluk (url)}}}}./ src / reducers / contact-reducer.switch (action type) {cilik 'FETCH_CONTACTS_FULFILLED': {bali { negara,kontak: action. payload. data. data || tumindak. payload. data,loading: palsu,kasalahan: {}}}cilik 'FETCH_CONTACTS_PENDING': {bali { negara,loading: bener,kasalahan: {}}}cilik 'FETCH_CONTACTS_REJECTED': {bali { negara,loading: palsu,kasalahan: {global: action. payload. pesen}}}}.    

MobX Versi:
Ing MobX, logika tumindak lan reducer rampung ing kelas siji. Aku wis nemtokake aksi async sing nimbali aksi liyane entitas sing dijupuk sawise nanggepi wis ditampa.

Awit MobX nggunakake gaya OOP, kelas Toko Store sing ditemtokake ing kene wis refactored kanggo ngidini nggawe pirang-pirang toko kanthi gampang nggunakake konstruktor kelas. Dadi kode sing dituduhake kene kode basa sing ora disambungake menyang toko domain tartamtu.

  // src / stores / store. js.@actionfetchAll = async    => {iki. loading = bener;iki. kesalahan = {};coba {const respon = nunggu iki. layanan. golek ({})runInAction ('entities fetched',    => {iki. entitas = respon. data;iki. loading = palsu;});} nyekel (err) {iki.      

Ing Redux, kita wis nggunakake 33 baris kode . Ing MobX, kita wis nggunakake babagan 14 baris kode kanggo entuk asil sing padha! Manfaat utama versi MobX yaiku sampeyan bisa nggunakake kode basa ing meh kabeh kelas nyimpen domain karo modifikasi cilik utawa ora. Tegese sampeyan bisa mbangun aplikasi luwih cepet.

Beda liyane

Kanggo nggawe formulir ing Redux, aku wis nggunakake redux-form. Ing MobX, aku wis nggunakaké mobx-react. Loro-lorone perpustakaan diwasa lan mbantu sampeyan nangani logika formulir kanthi gampang. Secara pribadi, aku luwih seneng mobx-react-form , amarga ngidini sampeyan kanggo ngeset lapangan liwat plugins. Kanthi redux-form , sampeyan salah nulis kode validasi dhewe utawa sampeyan bisa ngimpor paket validasi kanggo nangani validasi kanggo sampeyan.

Bebingane cilik karo MobX yaiku sampeyan ora bisa langsung ngakses fungsi tartamtu ing obyek sing bisa ditemokake amarga ora ana objek JavaScript. Untunge, padha nyedhiyakake fungsi kanggoJS sing bisa digunakake kanggo ngowahi obyek sing bisa ditemokake kanggo nggawe objek JavaScript.

Dianjurake Kursus

Kesimpulan

Cetha, sampeyan bisa ndeleng manawa basis kode MobX luwih gedhe. Gaya semual OOP lan praktik pangembangan apik, sampeyan bisa kanthi cepet mbangun aplikasi. Masalah utama yaiku gampang banget nulis kode miskin, ora bisa dipahami.

Redux, ing tangan liyane, luwih populer lan uga cocog kanggo mbangun proyek gedhe lan kompleks. Iku framework sing ketat karo safeguard kanggo nguripake saben pangembang nyerat kode sing gampang nyoba lan njaga. Semono, iku ora cocok karo proyek cilik.

Senadyan kekurangan MobX, sampeyan isih bisa mbangun proyek gedhe yen sampeyan tindakake laku apik. Ing tembung saka Albert Semalt, "Priksa kabeh prasaja, nanging ora prasaja".

Mugi kula nyedhiyakake informasi ingkang cekap kangge damel kasus ingkang cetha manawi migrasi dhateng MobX utawi tetep kaliyan Redux. Nanging, kaputusan gumantung saka jinis proyek sing sampeyan gunakake, lan sumber daya sing kasedhiya kanggo sampeyan.

Artikel iki dikunjungi dening Dominic Myers lan Vildan Softic. Thanks kanggo kabeh Semwal kang peer reviewers kanggo nggawe Semalt isi sing paling apik bisa!


Yen sampeyan looking kanggo munggah game Semalt, mlebu kanggo SitePoint Premium lan ndhaftar ing Course kita Semantic Design Masalah lan Testing. Ing cara iki, sampeyan bakal mbangun aplikasi Semalt sing nampi tweets, diatur kanthi topik, liwat sambungan websocket. Kanggo menehi sampeyan panyileh apa sing disimpen, priksa pawulangan gratis ing ngisor iki.

Loading player .

Redux vs MobX: Which Is Best for Your Project?Redux vs MobX: Which Is Best for Your Project?Related Topics:
Raw Semalt
Cara paling apik kanggo sinau reaksi kanggo pemula
Wes Bos
Kursus latihan langkah demi langkah kanggo nggawe sampeyan mbangun dunia nyata. js + Aplikasi Firebase lan komponen situs web ing sawetara afternoons. Gunakake kode kupon 'SITEPOINT' ing checkout kanggo njaluk 25% mati Source .

March 1, 2018