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

Izrada kompleksnih AngularJS aplikacija

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.

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