Angular 2 czy react + redux

0

Hej. Zastanawiam się w czym napisać teraz aplikacje w ramach learn by doing. Moim celem jesr angular2 lub react z reduxem. Pobieżnie znam reduxa A reacta w miarę ok. Angular2 natomiast prawie nic bo od 2 dni coś tam czytam dopiero. Generalnie jestem już trochę ogarniętym programista więc nauka frameworka to kwestia czasu.

Generalnie lepsze wrażenie zrobił na mnie angular 2. Mimo ze informacji do przyswojenia jest dużo, to wydaje mi się ułożony dużo bardziej niż jego poprzednik i łatwiej się czyta kod angulara2 niz react z reduxem. Ale to takie pierwsze spotrzezenie. Być może później jest zupełnie inaczej dlatego mam prośbę o pomoc w zdecydowaniu.

Dodam jeszcze ze po stronie backendu będzie nodejs. Generalnie mam zamiar uczyć się dwóch naraz ale projekt chce zrobić najpierw W jednym.

2

to kwestia preferencji. żaden nie jest lepszy, jest jedynie częściej wybierany.

znam ludzi, którzy rozpoczynają pół godzinny wykład o wyższości angulara jak tylko zobaczą kawałek JSX-a
znam ludzi, którzy będą hejtować angulara jak tylko zobaczą, jakieś "ng-"

OSOBIŚCIE nie lubię w Reactie tego, że nieraz trzeba mocno przekombinować rzeczy, żeby uzyskać jakiś tam efekt, chociażby renderowanie modali przy utrzymaniu deklaratywnego programowania jest trudne, Redux w połączeniu z Reactem też powoduje, że kod pisze się wolniej (niemniej "single source of truth" jest bardzo fajnym rozwiązaniem). Redux na vanilla js jest ciut prostszy

Angularowi (1) mogę zarzucić brak jednolitości. Framework ułatwia pisanie niedbałego kodu. Raz zmienną ze scopeu przestawisz bezpośrednio w templatce, raz wywołasz funkcję, która ją zmieni. We dyrektywach czasem sobie podepniesz ng-class i cała resztę angularowej magii, czasem napiszesz coś w pure js, bo ... tak będzie działać szybciej. Aplikacje szybko stają się ciężkie i niefajnie je optymalizować

Angulara 2 mało znam, kod tylko widziałem parę razy i robiłem review, nigdy nie uruchamiałem. TypeScript jest zdaje się dobry w teorii, w praktyce zbyt często widzę any. Jakieś śmieszne problemy były z nowym bindowaniem zmiennych (coś z a href, którego nie dało się wpisać statycznie), ale nie jestem w stanie Ci teraz powtórzyć dokładnie. Sam fakt istnienia Angulara 2 jest dla mnie dobrą przesłanką by nie ufać "jedynce" i nieufnie patrzeć na dwójkę

Ja osobiście siedzę w obozie Reacta.

A Reduxa jako menedżera stanu możesz też używać w Angularze ;)

2

na angulara jest obecnie duże parcie, jest praktycznie w każdym ogłoszeniu zaraz po "świętej trójcy" frontu (lub ew. po jquery) tak więc z punktu widzenia zawodowego angie jest atrakcyjniejszy, dodatkowo react to biblioteka, a angie to fw więc wiadomo

2

Między tymi dwoma opcjami są fundamentalne różnice.

Angular 2:

  • podejście obiektowe - stateful, klasy, dekoratory, serwisy itd. - wszystko spięte kontenerem DI
  • HTML centric - temlaty w HTML + osobna składnia do pętli, ifów itd
  • framework - "framework calls you" - nie ty spinasz aplikację, wygoda kosztem mniejszej elastyczności,

React + Redux:

  • podejście funkcyjne - stateless, pure functions, stan w jednym miejscu (Redux storage),
  • JavaScript centric - templaty w JS (JSX), brak osobnej składni do przetwarzania komponentów - używasz po prostu JSa
  • biblioteki - "you call library" - ty spinasz aplikację, większa kontrola i elastyczność, trzeba to napisać,

@dzek69 pisze, że to tylko kwestia preferencji, nie zgadzam się z tym do końca. Oczywiście co nam łatwiej podchodzi na początku to kwestia preferencji i wcześniejszego doświadczenia, jednak React+Redux jest fundamentalnie prostszy, prostszy w znaczeniu przedstawionym w tym wykładzie:

Ze względu na powyższe ja bym wybrał React+Redux (i dorzycił Immutable.js bądź Mori), mimo, że wgryzienie się w niego może być dla niktórych osób trudniejsze (u mnie akurat jest odwrotnie). Angular ma za dużo "magii", która jest wg mnie najgorszą rzeczą w kodzie.

Co do ofert pracy - są w obu, oczywiście w Angularze więcej (choć na razie głównie ng1), jednak nie ma to znaczenia, bo i specjalistów od React+Redux jest dużo mniej. Nie ma też obaw, że Angular2 całkowicie wyprze drugie rozwiązanie, bo jak pisałem filozofia jest zupełnie inna, nawet skłaniałbym się ku przypuszczeniu, że React+Redux będzie zyskiwał na popularności, ze względu na renesans programowania funkcyjnego (taki np ClojureScript już intensywnie korzysta z Reacta, ma do tego chyba ze 3 zaawansowane biblioteki).

0

Jak programujesz w Javie to Angular Ci się bardziej spodoba :) Osobiście również preferuję Reacta z powodów wymienionych przez Maćka.

0

Dorzucę jeszcze co zapomniałem - Angulara 1 słabo się testuje, Reacta zdecydowanie lepiej.

React ma też tę zaletę, że możesz się go nauczyć i potem korzystając z identycznej składni tylko innych komponentów możesz stworzyć aplikację mobilną - React Native.

0

O, fajnie ze temat tak poplynal. Wracam z uczelnii a tu tyle odpowiedzi. ;) Ja generalnie lubie Reacta i Angulara rownoczesnie, ale trzeba isc do przodu i angular 1.x tyle ile umiem, to umiem wiec zeby isc dalej musialbym ruszyc a2, ale rownoczesnie tez wiem ze jest teraz spory hype na react'a z reduxem.

@dzek69 - zgadzam sie z Toba idealnie do tego co napisales na temat reacta i angulara 1, dlatego wlasnie chcialem zobaczyc nowy twor jakim jest angular2.

Czy jest po prostu czystszym, bardziej poukladanym angularem 1.x z zaciagnietymi koncepcjami z reacta, ale rowniez pozostajac wciaz przy swoich i w polaczeniu mamy po prostu dobrze przemyslany framework, bardziej obiektowy ( dla mnie spoko ) z naprawde fajnymi bajerami takimi jak dekoratory i cala otoczka TS, jak sie go umie wykorzystywac i przypomina to troche programowanie w c# ( jeszcze bardziej spoko ), czy moze to wyglada tylko tak z zewnatrz, a jak sie zacznie pisac bardziej wymagajace apki nie tylko angularowe 'Heros Apps' to wracamy znow do problemow a1.

Generalnie, tak czy inaczej przynajmniej rusze dwie opcje, zeby zobaczyc, ale zaczne od reacta z reduxem bo w sumie juz mam srodowisko postawione to bede pykal, a o angularze 2 bede czytal w pociagu, jak bede jechal do pracy, a pozniej moze cos poklepie.

Wiec zaczynam projekt w react + redux i node.js w backendzie. A do angulara 2 zrobie c# jako backend, bo na taki stack chcialbym sie zrobic.

Uszanowanko programowanko

0

Tu masz jeszcze ciekawe zestawienie: http://stateofjs.com/2016/frontend/ i może jeszcze to: http://stateofjs.com/2016/statemanagement/

2

Używam na co dzień Reacta (a konkretnie React Native) pracując dla dużego amerykańskiego klienta. W Stanach batalię wygrał już dawno React, zakładając oczywiście, że porównanie biblioteki i frameworku ma sens. ;) Żadna poważna firma z produktem z doliny krzemowej, którego używacie na co dzień nie inwestuje w Angulara, co łatwo sprawdzić (poza Facebookiem chociażby AirBnB, Deviantart, HipChat, Netflix, Twitter, eBay, Paypal, Yahoo...). Kod aplikacji w Angularze jest trudny w utrzymaniu, jedynki praktycznie nie dało się skalować, powstało sporo szamba, które będzie teraz stado nieszczęśników utrzymywać. Angular 2 dorzuca brak stabilizacji, nieprzewidywalność i ogólny brak dojrzałości ze strony twórców w kontekście wytwarzania oprogramowania. Nie podjąłbym ryzyka wchodzenia w Angulara 2 w obecnej chwili. U znajomego w firmie popełnili ten błąd gdy jeszcze był RC któryś tam i kompatybilność między wersjami jest bardzo niska. Upgrade wiąże się z przepisywaniem dużej części kodu. Oczywiście w przypadku małych aplikacji może to nie mieć znaczenia, ale gdy pracuje już nad kodem 5-6 zespołów scrumowych to zaczyna się nieprzyjemne zgrzytanie zębami. ;)
Redux do zarządzania stanem aplikacji jest spoko, chociaż ja wolę podejście Netflixa z Falcorem, ewentualnie Relay lub MobX (duża prostota, ale brak sensownych rozwiązań architektonicznych jak w Redux, więc łatwo pójść w złą stronę jeśli dobrze nie przemyśli się modelu). No i wszystko zależy od skali projektu. :)
Po tym wszystkim dlaczego Angular jest tak bardzo popularny w Polsce i tak dużo związanych z nim ofert pracy? Nie mam zielonego pojęcia (poza utrzymaniem kodu w NG 1), tendencja w Stanach jest nieco odmienna.

1

Czesc jako ze niedawno stalem przed tym samym dylematem to tez sie wypowiem.

Uzywam angularjs 1.x od ponad roku, pracuje za granica a dokladnie we wloszech gdzie spolczenosc (community jak i pracodawcy) jest podzielona na plus angular-a 1 ale nie ma jakies duzej roznicy bedzie to 60/70% vs 40/30%

Jesli chodzi o angular 2 to na produkcje poczekalbym jeszcze tak z 1-2 miesiace bo niby mamy stabilna wersje ale API moze sie jeszcze "znacznie" zmienic sam cos tam naskrobalem jak byla beta15 bylo to ToDO synchronizowane z s3 z AWS, po 3 dniach byla juz beta17 i aplikacja nie dzialala a patrzac na changelog jest jeszcze wiele breaking changes (przynajmniej tak bylo ~ 2 tygodnie temu)

Co do React-a zgadzam sie @dzek69 ze bardzo czesto trzeba kombinowac zeby osiagnac cel tylko dlatego zeby byc cool i pisac tak zeby bylo zgodne z thinking in react + react best practices.
Nie wiem ja widze react jako biblioteke do prezentacji, fakt ze ma duzo "komponentow" ktore moge z niego zrobic "fw" nic nie znaczy bo i tak kazda aplikacja w react bedzie napisana inaczej bo nie nie nakladajac zadnej architektury/struktury (sry ale polska trudny jezyk) kazdy projekt inaczej wyglada.

Czesto uzycie jakiegos komponentu sprawia wiele klopotow bo jesli nasza aplikacja zostala napisana z pewnymi kryteriami komponent moze nie dzialac, w angular 1 praktycznie jakbys nie "kodzil" to i tak komponenty beda dzialaly.

Angular 2 wedlug mnie narzuca dobre nawyki ale na sam poczatek mozna stwierdzic "what the hell is doing it" bo po prostu jest skomplikowany tak jak angularjs 1.x (oczywiscie jesli ktos pisze przyzwoite aplikacje).

To juz nie czas jquery ze sie pisalo byle kod by dzialal, dzis jesli ktos nie potrafi zrozumiec logiki FW bedzie pisal diabelnie slaby kod nie ma innej opcji.

React przypomina mi troche http://www.ppi.io/ (w swiecie PHP) czyli my dajemy ci warstwe prezentacji reszte dorzuc sobie sam dlatego kazda aplikacja wyglada inaczej i trudno jest sie polapac.

0

Wątek jest ciekawy, sporo interesujących informacji.

O front endzie wiem bardzo niewiele, a zwłaszcza o frameworkach JS. Jest to dla mnie zupełnie nowy temat. Wczoraj przyjrzałem się Angular 2 i czytałem "Quick Intro" i o jego najważniejszych zaletach.

Niektórzy podają za zalety, że można go odpalić na wszystkim (każdy OS, aby była przeglądarka) i bez internetu, tj. off-line. Ktoś pisał że on dobrze "porządkuje" front end.

Nie rozumiem jednak paru rzeczy, jakie są korzyści z podejścia MVC we front endzie ? Skoro już od dawna większość stron robi się w... (PHP, ROR, Django, Java, ASP MVC) właśnie w podejściu MVC. Po co dzielić front end znowu na model widok i kontroler? (Jedyne zastosowanie jakie widzę, to REST-owe aplikacje www z frontem JS-owym w MVC. Ale ich udział jest niewielki).

Ktoś pisał że strona w Angular 2 jest bardziej responsywna w sensie lepszej interakcji i szybkości działania. Że się nie dogrywa co jakiś czas (przynajmniej w małych SPA). Na szybkim łączu można sobie na to pozwolić, ale co z web dla mobile?

Jakie korzyści widzicie dla ANGULAR 2 i innych frameworków JS ?

Czy to w jakiś sposób zmienia na plus web dev, czy to raczej tylko chwilowa moda?

Czarny Krawiec

0

Dla typowej stronki framework JS nie ma sensu - tylko dowala roboty z renderowaniem tego po stronie serwera dla użytkowników bez JS.

Frameworki przydają się do SPA, albo do stron, które nie są "stroną firmową", ale są pełne formularzy i ogólnie zarządzania danymi (np. JIRA). W przypadku gdy dwa różne źródła potrzebują jakoś zmodyfikować określony element/obszar to mogą się ze sobą pogryźć, w przypadku asychronicznych akcji może dojść do race condition. Jeżeli używasz frameworka i tylko definiujesz stan, a dany element sam ogarnia jak to ma wyglądać - to jest to łatwiejsze w utrzymaniu (i przetestowaniu także).

0

Nie rozumiem jednak paru rzeczy, jakie są korzyści z podejścia MVC we front endzie ? Skoro już od dawna większość stron robi się w... (PHP, ROR, Django, Java, ASP MVC) właśnie w podejściu MVC. Po co dzielić front end znowu na model widok i kontroler? (Jedyne zastosowanie jakie widzę, to REST-owe aplikacje www z frontem JS-owym w MVC. Ale ich udział jest niewielki).

Korzysci sa takie same jak w swiecie back-end.

Czy to w jakiś sposób zmienia na plus web dev, czy to raczej tylko chwilowa moda?

Mysle ze to raczej "moda" na pisanie w pure js (vanilla) za niedlugo przejdzie prehistorie.

Tylko korpo ktory robia strony bankowe, dla szpitali i ogolnie dla "przedsiebiorstw" pisze w pure js dlatego ze musze miec kompatybilnosc z IE 6/7 bo wiekszosc pc stoi jeszcze na xp albo i starszych.

Mysle ze nikt powany dzis nie pisze duzej aplikacje w czystym js jesli wymogi tego nie wymagaja

Jakie korzyści widzicie dla ANGULAR 2 i innych frameworków JS ?

To proste idea WEB COMPONENTS jest po prostu fantastyczna tym bardziej gdy framework/lib pozwalaja ci opierac sie na natywnych web komponentach jak polymer/bosonic/x-tag i wiele wiele innych.W tym angular 2 tez pozwala ci pisac komponenty jako natywne web components oczywiscie nie na wszystkich przegladarkach to pojdzie bez polyfill-ow itp...

Angular 2 daje ci mozliwosc dzialania jako web app/hybrid app(ionic 2)/native app (nativeScript)/aplikacje desktop(electron) i po stronie servera (server-side-rendering)

Czyli uczysc sie jednej technologi (fw) i piszesz gdzie chcesz cos takiego jak java z wiadomymi ograniczeniami.

To samo jesli chodzi o React mozesz uzyc electron/native react i tak dalej i tak dalej.

0

p.s

Dla typowej stronki framework JS nie ma sensu - tylko dowala roboty z renderowaniem tego po stronie serwera dla użytkowników bez JS.

Racja ale i tak wolalbym to zrobic w react niz w czystym JS po prostu nie wyobrazam sobie tworzenia front-end bez idei komponentow a react przeciez wazy bardzo malo

A co do uzytkownikow bez JS noz coz 3% internautow byc moze + moja wczesniejsza odpowiedz.

0

Wystarczy nauczyć się jednego frameworka...

No tak, ale ten jeden framework to typescript (Microsoft) + jakiś nativescript (coś zupełnie nowego dla mnie) + inne bajery-ficzery, no i wypada znać JS (nawet jeśli mamy translator z TS do JS). Dużo się tego zrobiło.

Druga sprawa, AngularJS też miał być hiper-super, a teraz wersja 2 (ponoć mocno zmieniona) posyła pierwszą do Koszalina. Co będzie z dwójką, jak pojawi się trójka? :)

Oglądałem film Gugiela, jak mówili właśnie o tym, że jeden kod (z niewielkimi zmianami) może posłużyć jako front end webowy i aplikacja mobilna (dla Andka i IOS) - to jest trzeba przyznać ciekawa sprawa, ciekawe jak to się sprawuje w praktyce?.

0

Angular 2 daje ci mozliwosc dzialania jako web app/hybrid app(ionic 2)/native app (nativeScript)/aplikacje desktop(electron) i po stronie servera (server-side-rendering)

Ale czy to jest nadal Angular, skoro trzeba użyć ionic 2, native script, electron,... ? ;)

0
Złoty Pomidor napisał(a):

Angular 2 daje ci mozliwosc dzialania jako web app/hybrid app(ionic 2)/native app (nativeScript)/aplikacje desktop(electron) i po stronie servera (server-side-rendering)

Ale czy to jest nadal Angular, skoro trzeba użyć ionic 2, native script, electron,... ? ;)

Oczywiscie ze jest.

Chyba nie myslales ze znajac tylko angular 2 bedzie klepal na desktop/mobile kazda "platforma" docelowa ma swoje api.

Tutaj i tak masz wspolny jezyk, nie musisz znac python-a/c++/c#/jave zeby pisac na desktop tylko uczysz sie js+angular 2 i ewentualnie electron-a ktory i tak nie jest nie wiadomo jak wielce rozbudowany
To samo tyczy sie mobile nie musisz znac objective c/swift zeby pisac na mobile lub jave na androida a c# na wp10 tylko bierzesz sie za js+angular+ionic i masz juz wszystkie platformy.

Logike biznesowa masz wspolne co najwyzej na kazda platforme bedziesz mial inne UI.

Oczywiscie to zalezy od aplikacji i czasami natywne aplikacje sprawdzaja sie lepiej ale jest to 20% z nich.

0

W angularze 2 mozna pisac na mobile, tak samo jak w react (react native) a z tego co slyszalem ta druga opcja jest chwalona.

0

Wlasnie jestem po 2 tygodniowej nauce Angulara 2, jedynce co na razie moge powiedziec, to ze masakrycznie mnie zaskoczyl - pozytywnie. Rozwiazania ktore kiedys w Angularze wydawaly sie bardzo trudne, a jesli sie je wdrozylo to wymgalo to sporej wlanej ingerencji, tutaj jest zupelnie inaczej, to jest na mega, mega +. Rowniez kod w angualrze 2 jest znacznie lepszy niz w 1, w 1 latwo bylo mozna zrobic niezla zupe.

Tak wiec polecam goraco ten towar bo wydaje sie naprawde spoko, ale wciaz czuje ze pewnym momencie tak czy inaczej nastapi bariera, w ktorej to React bedzie krolowal i obejscie tego bedzie ciagle thinking in react, a z angulara 2 bo przerobce bedzie troche gorzej, ale tego nie wiem, jeszcze nic nie pisalem w tym.

0

Angular umiera w usa, wygral react?
Nie za grubo powiedziane?

1
qwerty111111111 napisał(a):

Tylko korpo ktory robia strony bankowe, dla szpitali i ogolnie dla "przedsiebiorstw" pisze w pure js dlatego ze musze miec kompatybilnosc z IE 6/7 bo wiekszosc pc stoi jeszcze na xp albo i starszych.

Tak się jakoś złożyło, że od pewnego czasu pracuję w korpo robiącą "strony bankowe" (taki w sumie potentat w tej dziedzinie) i.. obecnie podstawą jest Angular 1.x, powoli nadciąga Angular 2.0 - właśnie robię wewnętrzny projekt od zera na tym. Więc tak jakby nie do końca trafiłeś.

Kaczoorek napisał(a):

AngularJS też miał być hiper-super, a teraz wersja 2 (ponoć mocno zmieniona) posyła pierwszą do Koszalina. Co będzie z dwójką, jak pojawi się trójka?
Angular 3 w marcu 2017 ;)

Ale Koszalin to mi tu proszę zostawić ;]

0

Wybaczcie, że odkopuję ale chciałbym zasięgnąć waszej rady. Z racji, że rynek się szybko zmienia, więc to co mogło być pisane ponad pół roku temu już może nie być aktualne. Mianowicie chciałbym nauczyć się jakiegoś framework'a, bo w gruncie rzeczy mimo, że w ofertach na staż nie jest wymagana znajomość FW ale prawie zawsze w dodatkowych zadaniach trzeba daną aplikację napisać z wykorzystaniem FW.
Z racji, że już trochę minęło od wydania Angular 2 to pewnie można coś więcej o nim powiedzieć. Mimo, że ofert jest bardzo mało w porównaniu z Angular 1.x ale może w Angular 2 jest przyszłość i zamiast uczyć się 1.x powinienem zacząć od 2? Czy nowe projekty są już pisane z wykorzystaniem 2 czy 1.x? Chociaż z drugiej strony na początku może być mi dość ciężko, więc może Vue.js? Ale na niego jest małe zapotrzebowanie. A więc może React? Podobno jest prostszy.

0

jak dla mnie React, Redux, Node.js, Vue.js coś z tego bym ogarniał, Angie jak dla mnie popłynął z tymi wersjami i troche niestabilnie to wygląda, ale zobaczymy co inni napiszą :)
p.s. ponadto też zobacz co indywidualnie ci podchodzi i szybciej/chętniej się uczysz

3
  1. pytałem niedawno na grupie na Facebooku i na Reddicie czy Angular 1.* się jeszcze używa i dużo osób powiedziało, że tak. Co nie dziwi, w końcu dużo projektów narobiono w tym, trzeba to jakoś utrzymywać.
    tu jest wątek na Reddicie: https://www.reddit.com/r/javascript/comments/6chiuk/do_you_still_use_angular_1/

  2. jednak z tego co widzę po ofertach to króluje React

  3. Chociaż mnie osobiście najprzyjemniej się pracowało w Vue (chociaż jak mam do zrobienia nowy projekt to domyślnie wybieram Reacta, bo jego najlepiej znam). Vue to takie jakby połączenie Angular 1.* z Reactem, ale zrobione w sposób przyjazny dla programisty.

  4. Jeśli byś wybierał Reacta, to warto poznać Reduxa, bo obecnie jest na niego hype (który się skończy za jakiś rok, może mniej, póki ludzie się nie skapną, że pisanie w Redux to jedzenie szkła i że to samo można osiągnąć dużo prostszymi sposobami).

O Angularze 2 czy 4 nie mówię, bo nie miałem z tym styczności.

0

jquery

2

Z tego co czytałem to React króluje głównie w USA. W Polsce to jednak Angular przeważa. Vue właśnie polecają na początek bo podobno najprostszy. Natomiast krzywa uczenia Anuglara jest dość zabawna. title

1 użytkowników online, w tym zalogowanych: 0, gości: 1