Angular vs React w 2024

Angular vs React w 2024

Wątek przeniesiony 2024-12-17 21:22 z JavaScript przez Riddle.

TR
  • Rejestracja:około rok
  • Ostatnio:4 miesiące
  • Postów:7
0

Cześć,

Od 3 miesięcy tworzę projekty z wykorzystaniem frameworka Angular. Bardzo podoba mi się ten framework i chciałbym przy nim pozostać, ale zauważyłem, że dużo więcej jest ofert pracy dla React developerów.

Obecnie zależy mi na pracy jako FullStack Developer z wykorzystaniem języka Java na backend (mam już solidne podstawy Java i nie chce przerzucać się na inny język).

Z tego, co wiem, React jest łatwiejszy w nauce i częściej stosowany w mniejszych projektach. Oznacza to, że na rynku jest więcej ofert pracy, ale jednocześnie panuje większa konkurencja.

  1. Czy powinienem dalej brnąć i uczyć się Angulara, jeśli ofert pracy jest bardzo mało dla juniorów, czy powinienem przerzucić się na React?
  2. Jak to obecnie wygląda na rynku? Czy to prawda, że React zdominował Angulara i nawet zarobkowo wygrywa?
  3. Czy to prawda, że Angular jest już używany jedynie w wielkich korporacjach, które po prostu niechętnie chcą zmieniać znaną im technologię?
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 14 godzin
  • Lokalizacja:Koszalin
  • Postów:10094
3

Obie biblioteki (Angular i React) rozwiązują w zasadzie ten sam problem - czyli obsługa warstwy UI klienckiej części aplikacji webowej. Stosują bardzo podobne podejście, propagacja propsów w dół, dzieci przekazujące akcję do rodzica (event w angularze, callback w reacie), router, optymalizacje dom (virtual dom w reacie, incremental dom w ng), komponenty, współdzielony stan (redux, ng store), etc. Pomijając składnię, to są swoje klony. Tak na prawdę jedyną istotną różnicą jest to że przy okazji Reacta, przez konwencję używa się JSX, natomiast markup w angularze osadza się jako template przy komponencie, ale jak już mówiłem, to są dwa sposoby osiągnięcia tego samego, czyli abstrakcja na budowanie drzewa html. W zasadzie ciężko mi wskazać pomiędzy nimi różnicę która nie byłaby szczegółem implementacyjnym.

PS: Wiem. React ma większe community chyba, przez co wsparcie jest większe, wydaje mi się.

edytowany 5x, ostatnio: Riddle
VE
W React'cie nie emituje sie eventów w górę tylko wywołuje się metodę przekazaną jako props. W Angularze nie ma virtual dom. O czymś takim jak Context, podobnym do tego w Reacie też nie słyszałem.
Riddle
@Veox: Masz rację, poprawiłem. Dzięki za zwrócenie uwagi.
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 8 godzin
2

Nie widzę problemu żeby nauczyć się obu.
React mi się wydaje lepszy do luźnych i mniejszych projektów / startupów - czyli większości projektów, a angular do korpotworów.
React jest względnie łatwiejszy - normalne że jest w nim więcej projektów, pracy ale też kandydatów. Wydaje mi się że w reactcie szybciej i łatwiej o spaghetti w kodzie a angular wymusza bardziej zorganizowany kod, stąd może większe zamiłowanie do niego w korpo.
Najlepiej umieć oba i nie ograniczać się w ofertach. Czasem można nawet pracować przy projektach w obu frameworkach w jednej firmie.

Riddle napisał(a):

W zasadzie ciężko mi wskazać pomiędzy nimi różnicę która nie byłaby szczegółem implementacyjnym.

a jednak koduje się w nich zupełnie inaczej i wymagają nawet innego myślenia do osiągnięcia tego samego.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 2x, ostatnio: obscurity
RJ
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 9 godzin
  • Postów:436
0

Angular > React ale też nie zawsze i nie wszędzie.

Ja lubię Angulara, bo jak już go zrozumiesz to każdy codebase Angularowy ogarniesz (niezależnie od syfu i innych cudeniek).

Z Reactem jest to że co projekt to inne wymysły, moim zdaniem dev experience troche gorszy, no i ja fanem JSX nie jestem.

Angular ma swoj renesans teraz, jak ogarna zoneless change detection to już w ogóle Angular FTW.

Ale zgadzam się z @obscurity, że Angular to raczej grube i duże rozwiązania.

No i jeszcze jedna rzecz że Angular jest stabilny, a w React to co chwila coś nowego, były klasy, później funkcję, pytanie co jest teraz 😅

Ja z Angulara głównie zyje więc może być bias.

obscurity
pytanie co jest teraz teraz są sygnały, zresztą w angularze i w każdym innym frameworku też. Czy angular jest stabilny to bym się sprzeczał, był taki miesiąc że używając bardziej zaawansowanych ficzerów codziennie odkrywałem w nim bug, w dodatku zgłoszony lata temu i niezałatany
RJ
Sygnały sobie mogą być a tak czy siak wszyscy dalej wszyscy będą korzystać z RxJS i ten przeskok się tak szybko nie dokona, chyba że zoneless nadejdzie 😉 A ja bym się nie sprzeczał, bo jest stabilny i kropka - backward compatibility jest tez trzymane. Dobry framework jest i tyle.
Korges
  • Rejestracja:około 5 lat
  • Ostatnio:około godziny
  • Postów:571
0

ktoś mi kiedyś powiedział ze angular to troche jak java vs javascript.
angular -> java, react -> javascript.
Angular jest trudniejszy, bardziej cie ogranicza, ale robi to w jakimś celu.
Generalnie nie ma znaczenia który framework wybierzesz. Najlepiej znać oba.

edytowany 1x, ostatnio: Korges
obscurity
co znaczy react -> javascript?
Korges
odwrotnie do angulara. narzuca mniej boilerplate code, łatwiejsze wejście. róbta co chceta.
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 14 godzin
  • Lokalizacja:Koszalin
  • Postów:10094
0
obscurity napisał(a):
Riddle napisał(a):

W zasadzie ciężko mi wskazać pomiędzy nimi różnicę która nie byłaby szczegółem implementacyjnym.

a jednak koduje się w nich zupełnie inaczej i wymagają nawet innego myślenia do osiągnięcia tego samego.

Przykład?

PS: Też pytanie czy przez faktyczne różnice czy przez konwencje? 🤔

obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 8 godzin
1
Riddle napisał(a):

Przykład?

PS: Też pytanie czy przez faktyczne różnice czy przez konwencje? 🤔

przez konwencje, react wymusza stany immutable i tworzy cały komponent od nowa za każdym razem, trzeba kombinować żeby jak najmniej się renderowało po zmianie i nie wpaść w nieskończoną pętle, angular ma komponenty jako klasy i można programować w bardziej tradycyjny sposób. Angular ma serwisy i DI container a react raczej custom hooki, serwisy praktycznie jako takie się nie pojawiają a wstrzykiwanie jest ręczne i bezpośrednie, ewentualnie przez kontekst. W zasadzie podejrzewam że większość react devów nie słyszało terminu dependency injection.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 2x, ostatnio: obscurity
rozacek
Jak mam w pracy coś jako backendowiec dorobic w naszej reactowej apce - to rzeczywiście DI to jest słowo nieistniejące w tym świecie :)
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 14 godzin
  • Lokalizacja:Koszalin
  • Postów:10094
0
obscurity napisał(a):
Riddle napisał(a):

Przykład?

PS: Też pytanie czy przez faktyczne różnice czy przez konwencje? 🤔

przez konwencje, react wymusza stany immutable i tworzy cały komponent od nowa za każdym razem, trzeba kombinować żeby jak najmniej się renderowało po zmianie i nie wpaść w nieskończoną pętle, angular ma komponenty jako klasy i można programować w bardziej tradycyjny sposób.

https://react.dev/reference/react/Component Początkowe komponenty react były na klasach, tak samo jak w angular.

To że teraz popularne są tzw. "functional components" to jakby uproszczona wersja tego, i one nie tyle wymuszają immutability, co po prostu nie da się mieć mutable state w FC, skoro każdy render to ponowne wywołanie funkcji; i to powoduje obejścia tego, jak hooki. Class-based components normalnie mutują state i to działa tak samo jak w Angularze.

obscurity napisał(a):

Angular ma serwisy i DI container a react raczej custom hooki, serwisy praktycznie jako takie się nie pojawiają a wstrzykiwanie jest ręczne i bezpośrednie, ewentualnie przez kontekst. W zasadzie podejrzewam że większość react devów nie słyszało terminu dependency injection.

Nazywa się to inaczej, ale zasada działania jest taka sama. Większość rozwiązań które widziałem dostarcza zależności do niższych poziomów przez HoF albo właśnie przez kontekst. W zasadzie jak przekażesz usługę przez kontekst do dziecka to jest to tożsame z DI, tylko składnia inna.

edytowany 2x, ostatnio: Riddle
Zobacz pozostałe 3 komentarze
Riddle
Co nadal się przekłada na to że można zrobić mapowanie 1:1 FC na class-based. Różnica pomiędzy FC w Reacie i komponentami w Angularze, jak mówiłem, wynika bardziej z konwencji niż technikaliów.
obscurity
No tutaj react może częściowo udawać angulara ale angular raczej nie może udawać reacta.
Riddle
@obscurity: Wszystko co możesz zrobić w jednej libce możesz bez trudu zrobić w drugiej, różnią się tylko konwencją i składnią. React FC to jest 1:1 komponent angularowy, stan, efekty, markup, render, etc. Korzystając z obu rozwiązań model mentalny programisty wygląda tak samo, napotyka i rozwiązuje się te same problemy, testuje się je tak samo, korzysta się z nich tak samo, mają ten sam poziom zaawansowania i ten sam poziom zawodności, dzieli się aplikacje na komponenty w taki sam sposób. Jedyną "wielką" (hoho) różnicą, to jest FC w Reacie, ale to tylko cukier składniowy.
LukeJL
o ile hooki są absurdalne, to jednak wciąż są wygodniejszym i ogólnie lepszym rozwiązaniem niż używanie komponentów klasowych. Niektórzy lubią klasy, bo "obiektowo", ale komponenty klasowe w React łamią zasady dobrej obiektówki. Wszystko napakowane razem - metody lifecyclowe, stan, rendering, handlery eventów - pomieszanie z poplątaniem i wrzucone luzem. To nie jest OOP, to jest partyzantka. Plus strasznie nieergonomiczne. Metody lifecyclowe, do których trzeba tabelkę robić, żeby kumać, co się kiedy odpala choćby.
Riddle
No tak, nikt nie mówi że komponenty UI na klasach są OOP, wiadomo że nie. Milion razy już pisałem na forum że samo używanie klas jeszcze nie oznacza OOP, podobnie jak samo używanie funkcji jeszcze nie oznacza że mamy FP.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:7 minut
  • Postów:8423
1
Treektus napisał(a):

Z tego, co wiem, React jest łatwiejszy w nauce i częściej stosowany w mniejszych projektach. Oznacza to, że na rynku jest więcej ofert pracy, ale jednocześnie panuje większa konkurencja.

Z tym łatwiejszy w nauce bym nie przesadzał. Owszem, jest niski poziom wejścia, jednak React wymaga pisania dużo dziwnego kodu.

Z Reacta dałoby się zrobić język programowania, a nie tylko bibliotekę. Niby to JavaScript, ale bardzo dziwny JavaScript. Trzeba pisać po reactowemu stosując jakieś dziwne abstrakcje (te hooki to jakiś żart). Myślę, że to miałoby więcej sensu, jeśli twórcy Reacta postanowili pójść ścieżką Svelte i te rzeczy po prostu skompilować. Ew. ścieżką Vue i te rzeczy wykrywać bardziej automatycznie.

No i każdą wersją twórcy Reacta rozwiązują bohatersko problemy, jakie sami stworzyli. Jak i społeczność wokół Reacta ciągle tworzy nowe biblioteki pomocnicze rozwiązujące problemy, które stworzyły starsze biblioteki pomocnicze. Ciągle też się zmieniają rozwiązania, bo po prostu wychodzą z mody. Czyli ogólnie jeden wielki burdel.

Choć nie jestem pewien, czy w innych frameworkach jest lepiej/gorzej, bo z React miałem najwięcej do czynienia.


Zobacz pozostały 1 komentarz
LukeJL
Do jakiego stopnia? tak jak w Svelte, że robisz normalne zmienne i je zamienia na reaktywny stan? Czy nie doszli jeszcze do takiego stopnia kompilacji?
obscurity
nie wiem, nie używałem tego jeszcze szczerze mówiąc ale słyszałem że to wielki przełom ;)
RJ
@LukeJL: to co opisałeś w ogole sie nie tyczy ekosystemu Angulara. Ten lewacki burdel rozwiązywania bohatersko problemow ktore sie stworzyło nie istnieje, bo framework jest robiony z głową.
obscurity
@rjakubowski: angular był dosłownie posklejany taśmą i bazował na zone.js który tworzył strefy podmieniając Promise i doklejając się do callbacków wszystkich eventów, przez co nawet nie mógł natywnie się kompilować do ES6 tylko musiał korzystać z polyfillów i transpilowanych do ES5 async/await żeby w ogóle mógł wykrywać zmiany; dopiero teraz zaczynają trochę gipsować karton z którego powstał angular
RJ
Mało mnie to interesuje jak powstał. Próbowałem jednego chleba i drugiego i Angular mi lepiej smakuje.
Schadoow
  • Rejestracja:ponad 13 lat
  • Ostatnio:dzień
  • Postów:1068
0

@Riddle Projekt angularowy i podejście pod względem toolingu jest praktycznie taki sam. W przypadku reacta nie spotkałem dwóch projektów takich samych. React daje bardzo dużą swobode przy łączeniu rozwiązań co dla wielu bedzie plusem dla mnie jest to minus.

P9
  • Rejestracja:5 miesięcy
  • Ostatnio:4 dni
  • Postów:3
0

Co do ilosci ofert pracy to chyba subiektywne, bo ja teraz szukam na react develoepra, i wszedzie widze tylko ten angular... az sie zaczalem zastanawiac czy nie nauczyc sie tego angulara - ale pierw musze wiecej doswiadczenia zdobyc w react'cie.

MO
To ja zapytam z ciekawości gdzie Ty te oferty na Angulara widziałeś? Justjoin etc?
P9
na just join it przewaznie.
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 7 godzin
2
Riddle napisał(a):

Obie biblioteki (Angular i React) rozwiązują w zasadzie ten sam problem - czyli obsługa warstwy UI klienckiej części aplikacji webowej. Stosują bardzo podobne podejście, propagacja propsów w dół, dzieci przekazujące akcję do rodzica (event w angularze, callback w reacie), router, optymalizacje dom (virtual dom w reacie, incremental dom w ng), komponenty, współdzielony stan (redux, ng store), etc. Pomijając składnię, to są swoje klony. Tak na prawdę jedyną istotną różnicą jest to że przy okazji Reacta, przez konwencję używa się JSX, natomiast markup w angularze osadza się jako template przy komponencie, ale jak już mówiłem, to są dwa sposoby osiągnięcia tego samego, czyli abstrakcja na budowanie drzewa html. W zasadzie ciężko mi wskazać pomiędzy nimi różnicę która nie byłaby szczegółem implementacyjnym.

PS: Wiem. React ma większe community chyba, przez co wsparcie jest większe, wydaje mi się.

Ale pierdo-lolo.

Parafrazujac:

Assembler i Java rozwiazuja w zasadzie te same problemy - czyli automatyzacja procesow, tak zeby niektore zadania wykonywal komputer, zamiast czlowieka - rzedy wielkosci razy szybciej od niego.
W obu przypadkach powstaja jakies algorytmy, ktore cos dostaja na wejscie i cos wypluwaja na wyjscie. Pomijajac skladnie, to sa to klony. Cala reszta to szczegol implementacyjny. To sa dwa sposoby osiagniecia tego samego.

Fiat 126p i S-klasa to to samo. W obu przypadkach chodzi o przemieszczenie sie z punktu A do B. Reszta to szczegol implementacyjny.


λλλ
edytowany 3x, ostatnio: stivens
obscurity
No w zasadzie to z tymi samochodami to sie zgadzam, końcem końców efekt jest taki sam, jedynie po drodze mogło być ci troche mniej wygodnie, ale to mały szczegół
stivens
No jak napiszesz cos w assemblerze - albo juz nawet nie idac w skrajnosc, to powiedzmy ze w C - to koniec koncow program bedzie robil to samo. Po drodze moglo byc mniej wygodnie, ale program dziala. Co nie zmienia faktu, ze mowienie ze nie ma roznicy to absurd...
stivens
Albo inaczej: no to prawda, ale osobiscie nie chcialbym ani jezdzic maluchem ani pisac w assemblerze, mimo ze ostatecznie wynik bedzie taki sam ;)
HA
To samo miałem napisać xd dla Riddle'a chyba całe życie to szczegół implementacyjny, liczy się tylko efekt końcowy (śmierć).
MI
  • Rejestracja:około rok
  • Ostatnio:około godziny
  • Postów:91
0

Czyli jak nie lubisz pisać w javascriptcie to lepiej iść w pangulara?

RJ
Dalej wszystkie smaczki JSowe sie trzymają mimo TypeScripta 😛
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 8 godzin
0
mitowski napisał(a):

Czyli jak nie lubisz pisać w javascriptcie to lepiej iść w pangulara?

Nie, w obu masz javascript. Porównanie do javy moim zdaniem nawiązuje do ilości boilerplate'u jaki framework wymusza.
Jak nie lubisz javascript to jest blazor


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.