Jak jste na tom s Angular2? rubrika: Programování: JavaScript

5 anti.cz
položil/-a 19.5.2017
 
upravil/-a 20.5.2017

Ahoj, jak jste na tom s Angular2? S jednickou jsem nedelal a prisel jsem z Reactu. Mam zatim dost smiseny pocity. Nejak jsem si rikal, ze kdyz to prislo po Reactu tak to musi byt super, protoze toho spousty mohli odkoukat, ale nejak mi to moc neprijde. Tak me zajima, jestli to jsou moje neopodstatnene juniorske breciky, protoze jsem proste Ag2 nepchopil. U Reactu jsem prisel, videl, pochopil a zamiloval se.

Moje nejvetsi zklamani bylo, ze nemohu pouzivat Immutable. Teda po nekolika porodnich bolestech se mi do ngrx/strore podarilo dostat a zprovoznit aspon Immutable Records. Ale po komfortu .fromJS(), .merge() to stejne neni ono.

Sice se da pouzit ngrx-store-freeze, ale pri mutaci se appka sekne a nevyhodi zadnou hlasku, takze vsude pri praci s daty musim mit try catch.

Nedavno jsem prisel na to jak vlastne funguje ngOnChanges, kde pri porovani zmen se pouziva pouze dirty checking === a stala se mi vtipna vec, kdy jsem byl v domneni, ze se lifecycle pousti, protoze se data vizuelne menila. No pak se ukazalo, ze nektera zase ne. Po trose patrani jsem prisel na to, ze pulka dat se meni kvuli mutaci o ktere jsem nevedel... a ta druha se nemeni protoze se nepousti ngOnChanges kvuli dirty checkingu. Po ere Reactu jsem doufal, ze tyto veci jsou vyreseny a uz se tim nikdy nebudu muset trapit, ale ono se to vraci jako bumerang zpet...

Trosku zklamani z TypeSciptu, kde to pro me nema v podstate zadny velky benefit. Delam pouze client side JS a vsechna data tecou do appky az ajaxem a zatim to nevypada, ze by do TS byl pridan run-time checking narozdil od Flow.

Na druhou stranu rxjs a ngrx/Effects jsou naprosto super a proto jeste zustatam.

Jak jsem na tom vy? Mate spis kladny nebo zaporny pocit z Angularu2?

Komentáře

  • harrison314 : TS je transcripter, ktory pridava staticke typovanie, no sam nemeni JS, cakas nieco na co nebol stvoreny ani zamslany. A tiez mam pocit, ze sa silou mocou snazis natlacit Reactove principy do Angularu, to su dave uplne oldlisne filozofie. A potom to dopadlo tak ako dopadlo. 19.5.2017
  • ma.hajek : Framework musí odpovídat nastavení mysli toho kterého programátora. Ne vše je pro každého. Například já jsem byl s ng1 spokojen od prvního písmena a naopak nyní se mírně peru s Reactem... 19.5.2017
  • anti.cz : @harrison314 V podstate mas pravdu s tim pristupem. Snazim se, ale reference jsem nenavidel od prvni chvile, kdy jsem pochopil co to je... Flux a immutable jsou veci bez kterych bych se nechtel obejit. Snad se to casem zlepsi. 19.5.2017
odkaz
7 gooday
odpověděl/-a 19.5.2017
 
upravil/-a 19.5.2017

Angular 2, tedy teď už 4 - rozhodně kladný pocit :)

Pracoval jsem dlouho v Ag1 a trochu jsem si ošahával i React, ale chvíli na to byl Ag2 stable a už jsem u něj zůstal. Ag1 v době rozkvětu Reactu poskytoval komplet framework, který se dal poměrně snadno a rychle naučit a byl hodně univerzální a intuitivní, ale, abych tak řek, poskytoval prostor psát věci blbě a na prasáka, stejně jako pověstná úroveň jQuery pluginů. Nicméně i s Ag1 se dá napsat aplikace správně (https://angular.io/docs/ts/latest/guide/upgrade.html#!#follow-the-angular-style-guide) podle reactive standardů.

Oproti tomu React, vzniknul hlavně jako základní stavební kámen pro Flux, což je jen abstraktní definice pojmů a principů pro zpracování toku událostí a asynchronních dat. Praktičtější následovník Fluxu - Redux se dá velmi jednoduše napsat v jakémkoli jazyce.

A teď přichází Ag2, který sám o sobě je plnohodnotným frameworkem, který se, co do jednoduchosti použití snaží držet přístupu z Ag1, ale zároveň je mnohem více stavebnicový k tomu, aby se pak dal nakombinovat s reduxem. Jen je potřeba si před tím prostudovat, jak Ag2 interně zpracovává change detection, a hlavně jak a kde to kvůli reduxu vypnout :) https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection...

Redux se pak dá naroubovat dvěma způsoby, buď https://github.com/angular-redux/store, nebo pomocí zmiňovaného ngrx. První zmiňovaný má výhodu, že se s ním pracuje úplně stejně jako s Reduxem u Reactu, ale není zas tak moc provázaný s Angularem. Druhý - ngrx je psaný "Angular way" a člověk si na něj musí trochu zvyknout, za to je ale odměněna spousta vychytávek, kvůli kterým u Ag2 evidentně zůstáváš :)

To i to ti stále nechává otevřený prostor, jak si zpracovat "app state", sice jsem to nezkoušel, ale imho Immutables jsou tam "přimontovatelný".
ngrx-store-freeze neni do prod modu doporučovaný. Tak ale když už to máš ozkoušený v devu a na všechno máš testy, tak se pak neni čeho bát :)

V čem Ag2 trochu zaostává je server side rendering, ale tam to jde v poslední době hodně rychle dopředu.

Největší plus Ag2 osobně vidím ve vynikající dokumentaci, což je pro práci v týmu jasná výhoda. Organizace a struktura kódu je víceméně jasně daná, přitom velmi praktická, když je potřeba některý "součástky" zpřeházet/uklidit. Oproti tomu Reactí dokumentace je jedna velká džungle, zkombinovaná s různorodou implementací fluxu, nebo reduxu, či čehokoli jinýho. React trochu doplácí na svojí svobodomyslnost a co jsem se s ním seznamoval v různých starterpacích a podobně, největší problém bylo vždycky naladit se na autorovu představu, kde co má být, a jak se co má jmenovat a jak s tím nakládat (ale to už je nějaká doba, nevím, jak je to teď). A z toho vyplívající poznání, že každá jedna aplikace v Reactu může být naprosto jiná. Možná by se dalo říkat, že je aplikace "s Reactem", než "v Reactu" :) To u Angularu odpadá - best practicies jsou součástí tutorialu i dokumentace, a byla by hloupost vymýšlet si nějaký vlastní řešení.

Jo a jak píše v komentáři @harrison314 - od TypeScriptu čekáš něco, k čemu není určený. Asi bys ho opravdu úplně jinak ocenil až po zkušenost na backendu - hodně se to blíží Pythonu :)

Komentáře

  • anti.cz : Dik za pozitivni odpoved. Budu muset zapracovat na mem mindsetu... 19.5.2017
  • anti.cz : Koukal jsem vic na ten change detection a trochu zklamani. Nejvic divny mi prijde, ze se pousti Checky v cely appce ve vsech komponentach, kdyz jen v jedne pustis event. A to i v komponentach co jsou detachnuty. 16.6.2017
  • Občan : @anti.cz Defaultní change detection je velice opatrná, ovšem aplikace by měla mít ideálně nastaveno changeDetection: ChangeDetectionStrategy.OnPush, pak lze snadno dosáhnout naprosto čísté aktualizace domu. 22.6.2017

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.