O AngularJS som už písal v jednom zo svojich predchádzajúcich článkov. Je to JavaScriptový framework, ktorý vám umožní vytvárať SPA (Single Page Aplication) na základe Model-View-Controler vzoru. To je síce definícia v jednej vete, ale zďaleka nie všetko, čo sa o Angulari dá povedať. Preto sa dnes pozrieme na knihu ng-book od Aria Lernera.
ng-book je kniha, ktorá má 591 strán, čo ju tiež umožňuje v prípade núdze použiť na sebaobranu. Taký rozsah ale nie je náhoda, pretože Angular nie je nový ani malý framework, a tak je o čom písať. Autor vysvetľuje Angular od úplných základov až po komplikované témy. Je preto vhodná aj pre človeka, ktorý z Angularu zatiaľ pozná iba jeho názov.
Po povinnej jazde v podobne prvého (niečo ako „Hello world“) príkladu prichádza vysvetľovanie modulov, scopu a kontrolerov. Aj keď kniha miestami pripomína referenčnú príručku tým, že vymenuje všetky metódy objektu a popri tom vysvetlí všetky parametre týchto metód, je tento štýl striedaný normálnym read-friendly prístupom, ktorý robí knihu ľahko konzumovateľnú.
Po úplných základoch nasledujú ďalšie typické Angular-témy ako Expressions a filtre. Ďalšie tri kapitoly sú potom venované direktívam. To je vždy komplikovaná téma, keďže direktívy svojim spôsobom rozširujú možnosti Angularu, a tak aby ich človek vedel písať, musí im už tak trochu rozumieť. Aj keď na internete nájdete mnoho postupov ako ich písať a existuje aj oficiálna dokumentácia, tieto tri kapitoly patria k tomu lepšiemu, čo som o tejto téme našiel. Minimálne vysvetlenie Binding Strategies (spôsob, akým prepojíte scope direktívy so scopom jej rodiča) a metódy compile a link sú tu vysvetlené celkom dobre. Ari postupne prechádza všetky parametre konfigurácie, ktoré sú pri vytváraní direktívy možné a vysvetľuje ich.
Ďalšie dve kapitoly sú o konfigurácii a načítaní modulu a o smerovaní (routing) a po nich nasledujú pomerne dôležité témy a to Dependency Injection a služby. Vedeli ste, že na vytvorenie služieb má Angular päť rôznych metód? (je viem, možno ani neviete o čom hovorím, ak nepoznáte Angular a ja sa vás opýtam toto…). factory, service, constant, value a provider. A vedeli ste, aký je medzi nimi rozdiel? No nejaké tam sú a Ari ich vysvetľuje. Opäť jedna z tých užitočnejších kapitol.
Nasledujú témy XHR komunikácie (Ajax) a Promises. To druhé ani tak nie je Angular téma ako téma JavaScriptu všeobecne. Aj preto je celkom sympatické, že je tomu venovaná cela kapitola. Promises je vlastne nový vzor na programovanie kódu, ktorý sa musí vysporiadať s asynchroniciout. Klasický prístup je cez callbacky, ale ten dokáže spôsobiť takzvané callback-hell, kedy máte do seba vnorených 5 a viac anonymných metód (ak ste sa ich náhodou nerozhodli aspoň pomenovať, čo je celkom dobrý zvyk). Nehovoriac o tom, akú komplexitu kódu by vám nameral nejaký statický analyzátor kódu, je to často kód, v ktorom sa vyzná len autor a to ešte tak maximálne do jedného mesiaca po tom, čo ho napísal. Preto Promises prichádza s novým modelom, kedy odpoveď na konci asynchronnej metódy nie je vložená v pôvodnom volaní, ale je pripojená za ňu.
Nasledujúca kapitola má názov „Server Communication“ a je to rýchlokurz inštalácie a spustenia NodeJS (čo je JavaScriptový server, o ktorom som písal v jednom zo svojich predchádzajúcich článkov), ako aj konfiguráciu a pripojenie na Amazone AWS (Amazone Web Services). Autor totiž chce ukázať reálnu komunikáciu medzi Angular klientom a serverom, a tak sa pokúsil nájsť spôsob, ako to ukázať s minimálnou nutnou námahou. Nie je to kapitola priamo o Angulari a podľa môjho názoru v knihe ani nemusela byť, ale je to téma stále blízko Angularu, tak to až také nelogické nie je.
Nasledujú kapitoly o testovaní (ako Unit Test tak aj End-2-End testy), udalostiach a odporúčanej architektúre pri väčších projektoch a potom to už začína byť zaujímavé. Kapitola „Angular Animation“ hovorí o niekoľkých spôsoboch ako dosiahnuť v Angulari animácie (CSS3 Transition/Animations, JavaScript animácie a knižnice tretích strán). Nasleduje kapitola s názvom „The Digest Loop and $apply“, čo je opäť exkurzia do útrob Angularu a vysvetľuje ako vlastne funguje naviazanie View na hodnoty v scope (čo je jeden zo základných princípov Angularu, ktorý sa len málokedy vysvetľuje). Ďalšie zaujímavé kapitoly sú „Essential AngularJS Extension“, kde sú (aspoň v krátkosti) popísané rozšírenia Angularu ako AngularUI alebo ui-utils.
Lokalizácia, cacheovanie (Angular má na to priamo podporu, čo som doteraz netušil) a bezpečnosť sú témy nasledujúcich troch kapitol. Po nich nasledujú ďalšie dve o Angulari a Internet Exploreri a o písaní Chrome Apps pomocou Angularu. Posledné kapitoly pojednávajú o optimalizácii a debugovaní. Práve tá optimalizácia je pre Angular téma, ktorá sa rozoberá len málokedy, a pritom je dosť podstatná.
AngularJS je pomerne populárny framework a ng-book je kniha, ktorá o ňom pojednáva dosť komplexne. Nie len, že vysvetľuje veci podrobne ale rozoberá aj témy, ktorým sa v iných (tenších) knihách až tak nevenujú. Aj preto je to zatiaľ asi najlepšia kniha o Angulari, ktorú som držal v rukách.