Single Page Applications

Single Page Applications

Autor: Nenad Bugarić

Izgled i način korišćenja veba drastično su se promenili od njegovih prvih dana do danas. U početnoj fazi veb je korišćen za prezentovanje informacija i nije postojala nikakva interakcija sa korisnikom. Od tada veb neprestano evoluira i korisničko iskustvo se u velikoj meri promenilo. Sada korisnik aktivno interaguje sa sadržajem koji mu je prezentovan.

Prilikom interakcije korisnika sa nekom veb stranicom, često je potrebno obezbediti neku povratnu informaciju ili sadržaj koji se nalazi na serveru. Kod tradicionalnog pristupa razvoju web aplikacija to znači da se nakon akcije mora poslati novi zahtev serveru, gde će se na osnovu te akcije dinamički izgenerisati nova stranica. Ta stranica će na kraju biti poslata nazad i, kada brauzer primi tu stranicu od servera, on će je izrenderovati i tako prikazati korisniku sadržaj. Ovakav pristup kao posledicu ima celokupno rerenderovanje stranice, što nije najbolje korisničko iskustvo jer je korisnik često u situaciji da čeka promenu stranice i prikaz nove.

Jedan od načina da se dodatno poboljša korisničko iskustvo na vebu i da se nastavi evolucija u smeru poboljšanja korisničkog iskustva je da se u najmanjoj mogućoj meri smanji ovo vreme čekanja nakon akcije korisnika. Upravo to je problem koje Single Page Applications (SPA) pokušavaju da reše.

Single Page Application je aplikacija koja se izvršava u brauzeru i koja ne zahteva ponovno učitavanje stranice za vreme interakcije korisnika sa aplikacijom, što značajno ubrzava aplikaciju i tako unapređuje korisničko iskustvo. To se postiže time što se celokupna logika aplikacije kao i templejti i stilovi komponenti učitavaju pri inicijalnom pristupu web aplikaciji. Neke od najpoznatijih SPA su Gmail, Google Drive, GitHub, Soundcloud, iCloud, Trello i mnoge druge.

Pored izbegavanja ponovnog učitavanja kompletne stranice, SPA donosi i druge prednosti kao što su:

  • Brži prikaz komponente, jer se sa servera prilikom svakog zahteva dovlače samo podaci koji će biti korišćeni u komponenti, dok je templejt te komponente dovučen inicijalno pri prvom zahtevu
  • Smanjeno je opterećenje servera, jer ne mora da procesira HTML prilikom svakog zahteva
  • Isti back/end (API) koji koristi SPA se može koristiti za mobilnu aplikaciju
  • Ukoliko se odaberu odgovarajuće tehnologije (Node.js, MongoDB) moguće je razviti celokupnu aplikaciju uz korišćenje samo jednog jezika (JavaScript), što može da olakša razvoj i što za benefit npr. ima jednolično predstavljanje podataka (JSON) na svim nivoima aplikacije
  • Ukoliko je aplikacija već učitana u brauzer, moguće je njeno korišćenje i u trenucima kada internet nije dostupan, ukoliko se ne zahtevaju novi podaci sa servera

Osim prednosti koje donose, SPA imaju i delove gde je bilo potrebno napraviti kompromise a to su:

  • Povećanje kompleksnosti JavaScript koda, jer se celokupna logika aplikacije sada izvršava u brauzeru
  • SEO podrška od strane pretrazivača za sadržaj generisan uz pomoć JavaScript/a i dalje nije najbolja i potrebno je koristiti tehnike kao što je pre-rendering stranica za SEO
  • Ukoiko se radi o “velikoj” aplikaciji inicijalno dovlačenje neophodnih dokumenata može trajati duže.

Single Page Aplikacije ne treba posmatrati kao ultimativno rešenje koje treba koristiti za sve veb aplikacije/sajtove, već više kao još jedan od koraka u evoluciji veba i pokušaj da se korisniku pruži što bolje i fluidnije iskustvo pri korišćenju same aplikacije. Ukoliko je to jedna od stvari koja je visoko na vašoj listi prioriteta, onda je SPA definitivno opcija koju vredi razmotriti.