Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Izrada kompleksnih AngularJS aplikacija

Avatar for DaFED DaFED
October 01, 2014

Izrada kompleksnih AngularJS aplikacija

DaFED#26
Speaker: Miloš Janjić
Ovo predavanje će vas upoznati sa "best practices" prilikom kreiranja naprednijih AngularJS aplikacija.

Avatar for DaFED

DaFED

October 01, 2014
Tweet

More Decks by DaFED

Other Decks in Programming

Transcript

  1. O ČEMU NEĆEMO PRIČATI • Šta je Angular? • “Magični”

    two-way binding • TODO aplikacija na 101 način • Šta su to: directives, filters, scope, DI, services, controllers? • Da li je bolje pisati Angular aplikacije u CS ili JS? • itd…
  2. O ČEMU ĆEMO ZAPRAVO PRIČATI… • O stvarima koje bih

    voleo da sam znao, kada sam počinjao sa prvom “ozbiljnijom” AngularJS aplikacijom
  3. STRUKTURA APLIKACIJE • Savet: Počnite jednostavno, i kako dodajete više

    stvari tako pravite organizaciju. 
 Ne trebaju vam kule i gradovi na početku - kada nemate ni temelje! • Najvažnije - budite dosledni jednog standarda!

  4. STRUKTURA APLIKACIJE • Ne postoji ispravna/najbolja struktura! • LIFT princip

    L I F T Locating our code is easy Identify code at a glance Flat structure as long as we can Try to stay DRY
  5. STRUKTURA APLIKACIJE Po tipu Po funkcionalnosti app/ controllers/ services/ directives/

    templates/ app/ layout/ slides/ dashboard/ navigation/ Hibrid?
  6. OBRASCI (DATA PATTERNS) • Mali kontroleri koji samo služe kao

    sprega izmedju view-a / servisa / modela • Svi XHR trebaju da budu izolovani u posebne servise • Samim tim je i testabilno i može se koristiti na više mesta
  7. MODULARNOST • Želim da rewrite-ujem aplikaciju koja ima 400 strana

    u Angular? Kako? • Pogotovo prilikom rewrite stare/velike aplikacije.
  8. ČIST KOD • JSHint • Globalne varijable - koristite IIFE

    (immediately invoked function expression) • Anonimne funkcije?
  9. RUKOVANJE GREŠKAMA • Pomoću dekoratora možemo reći koji Angular-ov servis

    želimo da “doradimo” • $exceptionHandler servis
  10. DI • Kod mene u lokalu radi… ne znam otkud

    ove greške u produkciji!? • Bezbedno minifikovanje DI
 array ili $inject ili ngMin [deprecated] ili ngAnnotate
  11. DI

  12. BACKENDLESS • CouchDB (PouchDB) • Firebase (AngularFire) • Koristiti samo

    za neke delove sistema. • Korisno u offline režimu rada.
  13. OPTIMIZACIJA • Smanjiti broj watcher-a • Koristiti Bindonce modul gde

    vam ne treba two-way binding • Izbegavati angular $filter i custom filtere • Kompleksne stvari u $digest ciklusu • $templateCache • Compile i link funkcije
  14. ŠTA MOŽEMO DA AUTOMATIZUJEMO? • Minifikacija (zajedno sa ngAnnotate) •

    Spajanje svih fajlova u jedan (eventualno 2 fajla) • Verzionisanje (JS i CSS fajlova) • Keširanje template-a (zajedno sa minifikacijom) • Pokretanje testova • Build (i deploy) proces • Linter • Optimizacija slika i css-a
  15. KORISNE BIBLIOTEKE • restangular • angular-gestures • angular-ui-router • angular-loading-bar

    • angular-bootstrap • angular-local-storage • angular-translate • ng-file-upload • angular-google-chart • angular-bindonce