Polub bloga na fejsie!

Angular 2 vs React – jaka jest ich przyszłość?

10

Kilka tygodni temu wypuszczona została oficjalnie ostateczna wersja frameworka Angular 2. Ja osobiście jestem fanem React ale jako front-end developer jestem zainteresowany wszystkimi nowościami w świecie web developmentu. Mogłeś to zresztą zauważyć jeśli śledzisz mojego anglojęzycznego bloga. Pisałem tam między innymi o nowościach w Angular 2. W związku z tym wszystkim postanowiłem napisać artykuł Angular 2 vs React, ale nie będzie to takie klasyczne porównanie tych dwóch technologii. Jeśli chcesz więc chcesz najpierw sprawdzić jakie są podobieństwa i różnice pomiędzy nimi to zapraszam do zapoznania się z moim artykułem „React vs Angular 2 – compare the incomparable?„, który opublikowałem swego czasu na blogu firmy ScalaC.

No dobra, skoro więc nie będzie to takie klasyczne porównanie, to po co jest ten wpis? Otóż uważam, że skoro Angular 2 jest już w wersji finalnej to warto by było zastanowić się nad przyszłością tych dwóch technologii. W końcu React był w ostatnich latach najbardziej „na topie”. Pierwsza wersja Angulara była na tym topie przed Reactem. Czy w takim razie Angular 2 ma szansę stać się równie popularny jak jego pierwsza wersja? Czy React może stracić pozycję lidera?

I jeszcze zanim przejdę dalej, mała uwaga. W moich rozważaniach, pisząc React mam na myśli cały jego ekosystem, najczęściej z jakąś implementacją Flux, react-router’em itd. (wiem, że React sam w sobie to tylko biblioteka i że patrząc na nią w tym kontekście rozwiązuje ona zupełnie inny problem niż framework Angular 2). Ponadto proszę pamiętać, że wszystko to co poniżej, to tylko moje prywatne zdanie. Każdy ma prawo mieć swoje 😉

Historia

Jak to zwykle bywa, możemy wiele przewidzieć w obecnej sytuacji analizując historię. W przeszłości było całe mnóstwo różnych frameworków JavaScript. Właściwie co rok, dwa mieliśmy nowego lidera. W internetach znaleźć można nawet memy a ten temat:

historia frameworków JS

Źródło: http://blog.bitovi.com/longevity-or-lack-thereof-in-javascript-frameworks/

No dobra, ale jakie są podobieństwa pomiędzy tymi „najgorętszymi” frameworkami? Wydaje mi się, że przed erą Reacta, każdy nowy framework był trochę rozwinięciem, ewolucją poprzednich. Dopiero pojawienie się Reacta wraz z jego ekosystemem było prawdziwą rewolucją. React dostarczył całkowicie inne podejście od tego co znaliśmy do tej pory… Virtual DOM, model komponentów, JSX, tylko „one-way” data binding. Wszystko to kompletnie odwróciło do góry nogami sposób w jaki budujemy teraz interfejsy użytkownika. A wszystko to działa bardzo szybko i wydajnie! Jak można było tego nie pokochać? 😛

Teraźniejszość

I teraz oto, pojawia się Angular 2. Czy jest to rewolucja na miarę tej jaka miała miejsce wraz z pojawieniem się Reacta? Szczerze mówiąc… „nie wydaje mie sie”. Co prawda jest on także oparty o model komponentów ale tworzenie tychże wydaje się być bardziej skomplikowane. Trzeba używać jakichś brzydkich dekoratorów. To co jeszcze jest, moim zdaniem, „brzydkie” to sposób definiowania szablonów HTML jako „string” albo w osobnym pliku. W porównaniu do składni JSX z Reacta (której nota bene na początku nie lubiłem, po przesiadce z Angulara 1.5) taki podział na kod JavaScript i osobny plik z HTML jest dużo mniej wygodny. I jeszcze te dziwnie wyglądające angularowe atrybuty, z których utkane są te szablony HTML…

Ok, przyznaję… Angular 2, tak samo jak jego poprzednik jest pełnym, wypasionym frameworkiem, w którym przewidziano praktycznie wszystko co potrzeba (nie ma chyba odpowiednika angielskiego słowa „opinionated” w języku polskim?). Dlatego też nie trzeba się zastanawiać jakiej biblioteki użyć do wywołań AJAX czy też do routingu. To jednak może być zarówno zaleta jak i wada… 😉 Wolność wyboru bibliotek jest świetna ale też niebezpieczna jeśli zdecydujemy się na przykład na w taką, która nie jest dłużej wspierana.

Architektura

To co mi się do końca nie podoba to to, że architektura nowego Angulara, także jest „opinionated” i nie prezentuje się szczególnie wyrafinowanie:

architektura Angular 2

Źródło: https://angular.io/docs/ts/latest/guide/architecture.html

Osobiście bardzo podoba mi się podejście architektury Flux i jej implementacji w Redux. Ale w świecie React mamy więcej opcji. Na przykład MobX o którym ostatnio pisałem na moim blogu anglojęzycznym. Na szczęście, z tego co mi wiadomo, to z tych rozwiązań da się skorzystać również w Angular 2. Przynajmniej co jakiś czas migają mi przed oczami na twitterze linki do różnych blog postów na ten temat. Wiecie coś na ten temat? 😉

TypeScript

Ostatnia rzecz, o której chcę napisać w tym paragrafie to TypeScript. Jest on uważany za największą zaletę stosowania Angulara 2. Ja osobiście nie jestem jeszcze do końca przekonany czy rzeczywiście zawsze warto. Oczywiście znam zalety statycznej kontroli typów itd. Z drugiej strony zawsze uważałem, że wielką zaletą JavaScriptu jest jego elastyczność wynikająca właśnie z braku tej kontroli. Dlatego też moim skromnym zdaniem, stosowanie statycznej kontroli typów ma najwięcej sensu w dużych aplikacjach klasy enterprise. I to, moim zdaniam powoduje, że głównym „targetem” Angulara 2 są właśnie tego typu projekty (pewnie najlepiej żeby jeszcze na backendzie był C#). W takim środowisku myślę, że sprawdzi się on najlepiej.

Wielkie korporacje i społeczność

To co jest jeszcze istotne w moich rozważaniach to to, że zarówno React jak i Angular 2 zostały stworzone przez zespoły należące do największych światowych korporacji. Myślę, że to może nam dać pewność że będą one stale rozwijane. I to w sumie odróżnia je też od wszystkich wcześniejszych topowych frameworków.

Jestem pewien, że Google zrobi wiele by Angular 2 osiągnął podobny sukces jak jego poprzednik. Myślę też jednak, że Facebook zrobi to samo z Reactem. Obie te firmy na pewno nie chcą stracić prowadzenia, będą więc nadal rozwijać swoje produkty. Z korzyścią dla nas wszystkich 😉 Poza tym, wokół Reacta mamy już na prawdę silną społeczność, a duża część społeczności skupionej wokół Angulara 1 płynnie przeskoczy do Angulara 2. A jak wiadomo, społeczności mają duże znaczenie w utrzymaniu popularności produktów.

Angular 2 vs React – podsumowanie

Czyli reasumując…. kto wyjdzie zwycięsko z rywalizacji Angular 2 vs React? Na podstawie tego wszystkiego co napisałem powyżej, najbardziej prawdopodobne wydaje mi się, że obie te technologie znajdą dla siebie miejsce na rynku. React utrzyma swoją pozycję świetnego narzędzia do tworzenia wydajnych aplikacji. Natomiast Angular 2 będzie lubiany przede wszystkim przez duże firmy pracujące nad dużymi projektami enterprise (szczególnie dzięki wsparciu i rekomendacji dla TypeScript).

Na pewno wypuszczenie Angulara 2 to duża rzecz i wiele osób na to czekało. Będzie on z pewnością świetnym frameworkiem jednak jak każdy inny (również React i jego „ekosystem”) ma swoje wady i zalety. Na razie wydaje mi się on bardziej skomplikowany przez co posiadać może większą barierę wejścia. Początkujący developerzy mogą więc preferować Reacta na starcie swojej kariery.

Na tę chwilę sądzę, że będziemy w najbliższych miesiącach obserwować dużo szumu na temat Angulara 2 ale React pozostanie na podium przez jeszcze długi czas. Pytanie tylko kto przejmie pierwsze miejsce w rywalizacji Angular 2 vs React?

REACT, REDUX, REACT-ROUTER - KURSY ON-LINE

Chcesz od podstaw poznać tajniki React, Redux oraz react-router? Zapraszam do moich szkoleń on-line:

Przejdź do szkoleń
  • Przypomina to troche Zena i Symfony przed laty, oba frameworki dzielnie się rozwijały podnosiły wersje aż w końcu inny początkowo niepozorny i też juz jakiś czas rozwijany projekt pozamiatał ogródek – Laravel hmm gdzie dwóch się bije tam trzeci korzysta 🙂 Nie byłbym zaskoczony jak za jakis czas jQuery stanie się samodzielnym frameworkiem z ciekawa architektura a jego dotychczasowa role przejmie CSS4 czy juz CSS5

    • Hehe, z jQuery to może trochę pojechałeś 😉 Ale fakt, to się tak wszytko dynamicznie zmienia, że za kilka lat React i Angular będziemy pewnie i tak tylko wspominać, a ekscytować się będziemy zupełnie nowym podejściem/technologią…

    • Tutaj chyba takim trzecim może się okazac Vue.js 😉

    • Anthony Szpieg

      chyba Cie nieźle poniosło z tym laravelem. owszem był boom z rok czy dwa temu, tak jak na nodejs i inne popierdółki, ale kazdy szanujący się dev wie, ze nie ma nic w świecie PHP lepszego od Symfony do długo terminowych projektów. Owszem była batalia zacięta pomiędzy zendem i symfony, którą ostatecznie wygrało symf.

      co do samego artykułu to się nie wypowiem, bo sam jestem na pograniczu podjęcia decyzji, czy to Angular czy też React

  • Tomasz Cy-man

    „zostały stworzone przez zespoły należące do największych światowych korporacji” -> a GWT to nie? 😉 przyszło nowsze, lepsze podejście i Google postanowiło porzucić GWT, równie dobrze mogą porzucić Angulara… Wiem dywagacje 😉 tym bardziej, że Microsoft ma swój wkład w tworzeniu Angulara 2, ale jak to mówią: ‚nigdy nie mów nigdy’ 😉

  • Heh…. ” Jak można było tego nie pokochać?” a no można nie pokochoać. Nie jesteś jakoś super obiektywny wydaje mi się.

    Typescript JEST zaletą – po pierwsze daje mega luz w d… jesli chodzi o standardy ecma.
    Po drugie pozwala nam faktycznie korzystać z silnego typowania…. a gdy będzie nam ono przeszkadzać, po prostu je olać i zrobyć to w sposób JS-owy 🙂

    Patrz. Takie odseparowanie widoku od ts-a daje nam między innymi to że templatką może zajmować się „bardziej dizajner” a kodem „bardziej developer” i nie muszą sobei przeszkadzać. Na gicie mniej konfliktów. jakby.

    No jsx fajnie nam pomoże. nie? Tylko to samo zrobi przy typescripcie IDE z Angular services 🙂

    Ostatnio w teamie mieliśmy własnie na ten temat dyskusje.

    No mam inne patrzenie na to- odwrotne wręcz,

    React moe i spoko, ale tam gdzi FAKTYCZNIE potrzebujemy wydajnoci i kade 0, 001 sekundy jest mega istotne -take TU jest miejsce dla.

    Wiesz jak się mówi – developer jest droższy niż kolejny procesor 🙂 szczególnie jeśli to jest procesor klienta, oglądającego nasza aplikację przez przeglądarkę 😉

    No zobaczymy co wygra.

    Ale spoko się czyta 🙂 Nie zgadzam sie , ale spoko się czyta 😉

    Ej a nie machnął byś wpisu Angular vs polymer?

    • nikt nie mówi, że jestem obiektywny 😉 to nie ogólnopolska gazeta tylko blog, na którym wyrażam swoje prywatne opinie, które bywać mogą kontrowersyjne (czasem zamierzenie)…
      co do to TypeScripta to od czasu tego wpisu trochę go poużywałem i w sumie teraz mam dobre o nim zdanie 😉

  • Dariusz Choinski

    Reacta nie znam, więc się nie będę o nim wypowiadał.
    Angulara znam od wersji 1 i to bardzo wczesnych. Tak samo jak inni uległem złudzeniu jaki to wspaniały jest. Mocna reklama, oraz prezentowane efektowne sztuczki typu dual binding, czy inne nieprzydatne wodotryski spowodowały, że ludziska się na Angulara rzucili. Tak też ja zrobiłem. Ciężko go było ogarnąć, bo na początku wszystkie materiały dydaktyczne koncentrowały się na wykorzystaniu efekciarskich dodatków, niż na wytłumaczeniu najbardziej istotnej rzeczy tj. czym są dyrektywy i jak ich używać. Parę lat minęło nim zauważono błąd. Materiały dydaktyczne zredagowano w końcu poprawnie. Niestety było już za późno, bo pojawił Angular 2, który jest zupełnie inny od Angulara 1.
    Ci co mieli rozpoczęte aplikacje w Angularze 1 stanęli przed dylematem, kontynuować kodowanie w nim dalej, czy przepisać appke od nowa w Angularze 2. Te w Angularze 1 były najczęściej kiepsko napisane, a Angular 2 w cale nie gwarantuje że będą lepsze.
    W jakim by frameworku nie tworzyć aplikację, największą trudnością jest stworzenie czystej i łatwo skalowalnej architektury aplikacji , + plus sprawnie działające narzędzie developerskie i testowe.
    Jak programista umie zbudować dobrą architekturę dla swojej appki , oraz skonfigurować dobre narzędzia/środowiska do developerki i testów, to może applikację napisać w natywnym javascriptcie + jquery + biblioteki third party . I będzie to samo, tyle że dużo szybciej.
    Żeby dobrze posługiwać się Angularem trzeba wielu miesięcy praktyki. Potem okaże się, że nowa versja Angulara nie jest kompatybilna wstecz, i trzeba tracić czas na refaktoring całej aplikacji.
    Właśnie z tego powodu uznałem, po nauczeniu się Angulara 2, że nie nadaje się do produkcji.
    Angular 2 cierpi na to samo co Angular 1, brak stabilności. No a teraz mamy już Angular 4.
    Przypuszczam, że ta wersja się długo nie utrzyma. I tak będą wodzić w koło Macieja.
    Moim zdaniem framework w wersji 1 był mocno jest przekombinowany, w wersji 2 jest z tym lepiej, ale i tak zawiera wiele rzeczy dziwacznych i nawet moim zdaniem bezużytecznych.
    Wydaje mi się że prostsze frameworki np. Vue.js React.js, Riot.js będą cieszyły się większym wzięciem.
    Ja z Embera.js , którego wyżej cenię od Angulara, przerzuciłem się na Backbone,js., bo tu jestem wolny od konwencji oraz narzuconych przez tamte frameworki jedynie słusznych rozwiązań, stylu kodowania, czy architektury.
    Jestem z tego zadowolony, bo ja rządzę, a nie mną rządzi framework.

Google Analytics Alternative