Co lepsze dla Frontend Developera: ReactJS czy Angular? Devdebata cz.2
W pierwszej części devdebaty zapytaliśmy naszych ekspertów o to, co myślą o społeczności skupionej wokół ReactaJS i Angulara, jak oceniają próg wejścia oraz czy mogą polecić dobre narzędzia do testowania automatycznego dla obydwu rozwiązań? W drugiej części, którą właśnie czytasz zapytaliśmy frontendowców m.in. o to, jak oceniają dokumentację ReactJS, a jak Angulara.
Odpowiedzi udzielają:
Krystian Pudlik. Frontend Developer w Evojam. Fan dobrego UI/UX. Entuzjasta TypeScripta, funkcyjnego programowania i niekonwencjonalnych rozwiązań dla ekosystemu frontendowego. Na co dzień pracuje z Reactem i Angularem, a po godzinach eksperymentuje z Elmem. Wierzy w zalety restrykcyjnego podejścia do code review i procesu wytwarzania oprogramowania.
Tomasz Kryń. Senior JavaScript Developer w studio programistycznym Smultron, tworzący gry i aplikacje webowe w Angular, Vue, React, Pixi, Node i VanillaJS. Z wykształcenia matematyk, który udowodnił kilka swoich twierdzeń. Hobbystycznie zajmuje się sztuczną inteligencją, a w szczególności deep learningiem.
Tomasz Łakomy. Senior Frontend Developer w OLX Group. Prelegent na konferencjach JavaScriptowych/Reactowych, współorganizuje React Poznań Meetup oraz meet.js Poznań i uwielbia dzielić się wiedzą z innymi.
Daria Woźnicka. Programistka RoR & JS w BinarApps, koordynatorka Women in Technology Łódź. Absolwentka Politechniki Łódzkiej na kierunku Informatyka oraz studentka Akademii Menedżerów Muzycznych. Zawodowo — programistka tworząca aplikacje internetowe dla software house’u. Programuje głównie w Ruby on Rails i Javascript. Po godzinach organizuje koncerty muzyczne.
Spis treści
Pytanie #6. Jak oceniasz dokumentację każdego z rozwiązań? Czy jest dogłębna, czytelna, przyjemna i łatwa w użyciu?
Odpowiada Krystian Pudlik, Frontend JavaScript Developer:
Początkowo Angular cierpiał na brak dobrej dokumentacji. Sytuacja zmieniła się w momencie wyjścia wersji 2.0, gdzie twórcy wydali nową wersję strony z dokumentacją i od tego momentu jest bardzo dobrze. Szczególnie ciekawie rozwiązana jest dokumentacja do API Angulara, gdzie wylistowane są wszystkie klasy interfejsy itd. Mimo wszystko uważam, że dokumentacja Reacta jest dużo lepsza, szczególnie sekcja “Quick start”. Ostatni face lifting sprawił, że dokumentacja Reacta jest jeszcze bardziej czytelna.
Odpowiada Tomasz Łakomy, Senior Frontend Developer:
Ze względu na to, jak powszechnie wykorzystywany jest Angular i React, nie ma tutaj miejsca na nieczytelną dokumentację. Dzięki temu programiści JS mają dostęp do świetnie napisanych oficjalnych dokumentacji, setek artykułów, dziesiątek filmów/kursów wideo (z całego serca polecam kursy na egghead.io, to tam nauczyłem się Reacta). Mimo że jestem fanem Reacta to muszę przyznać, że dokumentacja Angulara jest zdecydowanie bardziej rozbudowana i zawiera dziesiątki przykładów i gotowych rozwiązań (a może to dlatego, że Angular jest trudny? ;)).
Odpowiada Daria Woźnicka, Programistka RoR & JS:
Jeśli chodzi o czyste biblioteki, ich dokumentacja jest na najwyższym poziomie, łatwa w zrozumieniu, dogłębna i zawierająca pomocne przykłady. Obie biblioteki mierzą się niekiedy z wersjonowaniem. Czasem trzymając się ogólnie przyjętego standardu numerowania, a czasem nie. Na szczęście nie sprawia to problemów blokujących projekt. Biblioteki “zaprzyjaźnione” z tymi frameworkami, jak np. wspomniany wcześniej Rx.js, mają często niezrozumiałą lub wybrakowaną dokumentację. Nie obejdzie się wtedy bez wsparcia społeczności lub znajomego mentora. Z taką sytuacją częściej spotkałam się niestety w przypadku Angulara.
Pytanie #7. Jak oceniasz dostępność rozszerzeń (UI kitów, gotowych komponentów, bibliotek etc.) do obydwu?
Odpowiada Krystian Pudlik, Frontend JavaScript Developer:
W kontekście Angulara prym zdecydowanie wiedzie Angular Material, ponieważ jest to oficjalny UI kit wydany przez team Angulara. Jeśli chodzi o inne gotowe komponenty to jest tego coraz więcej (nie tak dużo jak w React), ale z moich doświadczeń większość nieoficjalnych gotowców jest marnej jakości. Mimo że celem twórców było stworzenie ekosystemu bazującego na TypeScript, to i tak wiele bibliotek/komponentów nie posiada poprawnego typowania.
React co prawda nie wydał oficjalnego UI kita, ale sytuacja wygląda zdecydowanie lepiej, ponieważ community jest większe i biblioteka jest dłużej na rynku. Bibliotek i komponentów do Reacta jest bardzo dużo i mam wrażenie, że gotowce z tego ekosystemu są napisane z większą starannością. Myślę, że wynika to poniekąd z progu wejścia, ponieważ w React łatwo jest napisać brzydki kod (ze względu na brak separacji widoku i logiki), ale ten kod nadal będzie działał dobrze. Angular z kolei otwiera drzwi do wycieków pamięci, jeśli ktoś użyje RxJS w niepoprawny sposób, a ludzie (niestety w większości z moich obserwacji) nie rozumieją TypeScripta.
Odpowiada Tomasz Kryń, Senior JavaScript Developer:
Chyba na końcu w wypowiedzi wyżej chodziło o RxJSa, bo TypeScript jest prosty. „Angular z kolei otwiera drzwi do wycieków pamięci, jeśli ktoś użyje RxJS w niepoprawny sposób”. Równie dobrze można powiedzieć, że JS otwiera drzwi do wycieków pamięci, jeśli ktoś użyje pętli w niepoprawny sposób ;). Zazwyczaj gdy coś jest dostępne dla jednego frameworka, to jest też odpowiednik dla drugiego. Odnośnie jakości, też jest taka jaka być powinna i ciągle rośnie. To normalne, że jeśli coś jest do wszystkiego, to… nie jest idealne, optymalne i takie jakie mogłoby być gdyby było napisane w konkretnym celu.
Odpowiada Daria Woźnicka, Programistka RoR & JS:
Przez popularność Reacta, internet pełen jest rozszerzeń sprofilowanych właśnie pod niego. Wiele paczek w sieci nie jest dobrze skonfigurowana do pracy z TypeScriptem, jednak społeczność dobrze sobie radzi udostępniając specjalną node’ową paczkę “types”, która “tłumaczy” rozszerzenia na TypeScript. W zawodowej pracy z obiema bibliotekami nie spotkałam się jeszcze z sytuacją, żeby brakowało mi jakiegoś rozszerzenia, które dostępne jest w drugim rozwiązaniu.
Pytanie #8. Jak oceniasz wsparcie twórców – release cycle, reakcję na zgłoszenia bugów etc.?
Odpowiada Tomasz Kryń, Senior JavaScript Developer:
Wydanie Angulara w stabilnej wersji 6 było planowane ponad miesiąc temu. Więc jak powiedział kolega z teamu „teraz wszyscy wielbiciele Reacta tańczą ze szczęścia”. Wolę jednak opóźnienie, niż wydanie czegoś niestabilnego jako stabilne (jak to miało miejsce np. z Ubuntu 17.10, które psuło laptopy). Zawsze się zdarza, że będą jakieś bugi, ale też zawsze można znaleźć obejście.
Odpowiada Daria Woźnicka, Programistka RoR & JS:
Biblioteki są open-source, to znaczy że każdy człowiek posiadający konto na GitHubie może przyłączyć się do ich rozwoju. Ilość współtwórców Reacta prawie czterokrotnie przewyższa ilość współtwórców Angulara (1178 do 343 w maju 2018), co oznacza, że możliwe naprawy bugów i usprawnienia prawdopodobnie dodawane są tyleż razy szybciej. Angular jednak ma olbrzymie wsparcie developerów Google’a, którzy zdecydowali się na regularne, częste releasy głównych wersji. Wobec tego nie można narzekać na utrzymanie i aktualizację żadnej z tych paczek.
Pytanie #9. Czy nie korzystanie z nich na stronie ma jeszcze sens?
Odpowiada Krystian Pudlik, Frontend JavaScript Developer:
Jak najbardziej. Wychodzę z założenia, że powinniśmy dopasować narzędzia do konkretnych problemów, więc wszystko zależy od przypadku. Nie widzę sensu podpinania Angulara czy Reacta do prostej, statycznej strony reklamowej, która nie wymaga współdzielenia części UI, ponieważ byłaby to “armata na muchę” (co nie znaczy, że nigdy nie powinniśmy tego robić).
Odpowiada Tomasz Łakomy, Senior Frontend Developer:
Zdecydowanie! Nie oszukujmy się, React i Angular to świetne narzędzia, ale blog, landing page, czy portfolio w sieci naprawdę nie potrzebują frameworka JSowego, żeby fajnie działać. Warto myśleć o tych milionach kB, które nasi userzy niepotrzebne ściągają także na urządzeniach mobilnych z 3G. Budując jakąkolwiek większą aplikację webową? Nie wyobrażam sobie zabieranie się za takie przedsięwzięcie bez odpowiedniego frameworka/biblioteki. Osobiście zawsze wybieram Reacta, ale może jestem nudny i chcę korzystać z tego, co już znam.
Odpowiada Daria Woźnicka, Programistka RoR & JS:
Nie ma. Ktokolwiek miał do czynienia z komponentowym frameworkiem JavaScriptowym i poznał piekło modyfikacji DOMu przez jQuery lub czysty JavaScript nie ma ochoty wracać. Nawet w małych aplikacjach warto jest zacząć od razu z taką biblioteką. Małe aplikacje lubią niespodziewanie się rozrastać, często do punktu, w którym nie da się już ich dobrze utrzymać. Posiadając tak ogromne społeczności w internecie, gotowe pomóc z każdym problemem oraz tak dobrze przygotowujące oficjalne i nieoficjalne darmowe tutoriale, nie ma na co czekać. Ja i wszyscy znani mi frontendowcy mają nadzieję, że projekty bez tych frameworków będą już niedługo przeszłością i nie będą się trafiały nawet w projektach legacy.
Mamy nadzieję, że spodobała Wam się ta devdebata. Już pracujemy nad kolejną edycją, tym razem dotyczącą Magento. Jeśli macie pomysły na inne edycje tej serii artykułów – dajcie znać w komentarzach.