Things you forgot (or never knew) because of React

1 Like

Eu nu inteleg hate-ul pentru React, poti face orice cu el, documentatia acum e la nivelul lui Rust, e exceptional de bine scrisa. La multe librarii necesare pe langa nivelul e la fel de bun. Ca si limbaj e JS/TS, nu trebuie sa inveti ceva domain language…
Nu inteleg cum poate cineva spune ca React e complex, probabil n-a incercat sa faca macar un TO DO list in Angular.

Gasesti solutii cam la orice, ecosistemul e urias, ai solutii pentru iframe-uri/module federation/microfrontends/module/aplicatie react importata in react asincron, react pe server, rendering 3D cu react (react-fiber).

Debugging-ul si testarea e usoara (vezi one way data flow), exista mii de exemple/articole pentru a invata cum sa faci asta.

Svelte in cel mai bun caz e bun pentru niste form-uri si tabele cu infinite scroll, in nici un caz nu l-as folosi la o aplicatie complexa… Faptul ca ai mutable state e foarte fain, pana cand nu faci mutatie la 200 de variabile deodata si nu mai stii ce schimba ce ca la jQuery/AngularJS. Inteleg, nu ai virtual dom, e rapid browserul, dar practic prin asta eu inteleg ca iti permite sa scrii cod foarte prost care schimba tot aiurea fiindca nu trebuie sa fii atent la ce faci.

Alternativa frumoasa la react e solidjs.com, dar inca nu exista ecosistemul necesar pentru a face ceva mai complex si e si ciudat in unele locuri.

Eu prefer codul declarativ fiindca e mai usor de inteles cand e vorba de ceva complex, codul imperativ trebuie ‘rulat’ in cap daca nu l-ai scris tu. Vezi un chart desenat in JS instructiune cu instructiune vs un chart declarat.

Acum daca incerci sa folosesti React vanilla, da, it sucks bigtime in special la forms. Partea buna e ca motivul pentru care e urat de folosit il face si de incredere si usor de rationalizat.

Singura mea problema e ca librariile se schimba major o data la 1-2 ani si ar fi necesar un refactor major ca sa poti sa treci la noua versiune pentru ceva feature nou.

Am scris componente complexe in React precum tree-uri, tabele cu infinite scroll, widget-uri, wizard-uri, chart-uri, editor de cod, editor de text si de la 0 si cu librarii si a fost ok. Singura problema a fost cu redux acum 3 ani, era criminal de mult boilerplate/de testat doar pentru coverage in unele cazuri.

Acum, cand ai nevoie de o componenta, doar componenta si ceva mai special unde e ok si vanilla JS ai lit, care e exact ce trebuie.

5 Likes

That :smiling_face_with_tear:

Thx for sharing

e ok pentru cineva care face proiecte mici si des, dar sa intretii un mamut si sa trebuiasca sa faci reparatie capitala la 2 ani? pff.

Nu prea inteleg cum lipsa virtual DOM-ului te face sa scrii “cod foarte prost”.

Din punctul meu de vedere, cu virtual DOM sau cu abordarea Svelte-ului, tot e vorba de mult “magic” si e nevoie de intelegere a mecanismului pentru a evita sa ajungi in scenarii in care performanta are de suferit major pentru ca nu faci “ce trebuie” (leaky abstraction).
Si mai sunt alte exemple celebre care au aceleasi provocari, de exemplu ORM-urile.

De zeci de ani industria incearca sa-si faca viata mai usoara cu update-ul UI-ului, dar tot parca nu suntem acolo. S-a dovedit ca nu exista un silver bullet.

Nu lipsa vdomului e problema ci faptul ca iti permite sa modifici orice de oriunde.

Exista un silver bullet cu state machines sau one way binding obligatoriu.

Adica eu pot sa iti spun de ce ceva se schimba fara sa stau zile in debugger la ceva mai complex daca se respecta ca se schimba ceva doar daca se schimba datele de un singur lucru in acelasi timp sau sunt side effects.

Svelte e mai smart cu two way binding (fata de AngularJS care avea watch global de exemplu), dar e multa magie in compilator. De compilatoare foarte foarte putina lume se atinge sau intelege cum functioneaza. Poti crea un dependency hell daca uiti sa pui un $ la ceva sau il pui la ce nu trebuia.

1 Like

Ah da, alt post cu alt articol de tip limbajul X sau frameworkul/libraria Y nu sunt bune, sunt depasite si o sa moara. Intre timp proiectele pe tehnologiile alea fac BRRRRRRR la fel si banii.