Universal web apps

Universal web apps er en type applikasjoner som lar deg bygge en nettside med felles kodebase for backend og frontend.

Felles kodebase betyr at utviklere kan jobbe i samme programmeringsspråk uansett om de jobber på server- eller klientdelen av koden. Det er enkelt å dele de samme komponentene gjennom hele applikasjonen. Ytelsen er veldig god fordi du slipper å laste hele siden på nytt for hver sidevisning, uten at dette går på bekostning av SEO – serveren svarer med fullstendig innhold for hver URL uansett.


Universal apps

Denne typen applikasjoner kalles gjerne Universal, eller Isomorphic. At koden er universell indikerer at den kan kjøre både på server og i en nettleser.

At en web-applikasjon er isomorphic indikerer nesten det samme, men også at state (tilstand) er delt mellom server og klient på en sømløs måte.

Fordeler med universelle applikasjoner

  • Felles kodebase
  • Du slipper å forholde deg til flere programmeringsspråk og maler
  • Forretningslogikk må ikke implementeres flere ganger og kan deles mellom klient og server.
  • Ytelse - Brukeren får se innhold med én gang, før klientscriptet er ferdig med å laste.
    Klientscriptet laster også raskere siden serveren allerede har gjort en del av jobben.
  • SEO - Serveren kan svare med innhold som søkemotorene fanger opp.
  • Raskt å flytte visningslogikk for komponenter mellom server og klient for å optimalisere opplevd hastighet.

Utfordringer

  • Krever mer kompetanse av frontendutviklerene – For å kode på server må de også ha den samme kompetansen som en backendutvikler. Ofte blir det mer naturlig å snakke om fullstackutviklere i denne sammenhengen.
  • Eksisterende backendteknologier må skrives om til å fungere som services som leverer data til en eller flere applikasjoner. Mange CMSer støtter dette ut av boksen mens andre har en monolitisk arkitektur som fungerer best når all applikasjonutvikling foregår med deres egne APIer og teknologier.
  • Du må ha kompetanse til å sette dette i drift og sørge for god oppetid.

Hvordan lage en universal app?

Du trenger ikke noe rammeverk for å lage en universal app, men det er en god del ting som må håndteres:

  • Felles kodebase for server og klient
  • Koden skrives med Javascript eller noe som kompilerer til Javascript
  • Bygging, kompilering, transpilering og bundling av scripts, maler og assets
  • Konfigurasjon av server i Node eller lignende
  • Synkronisering av tilstand mellom server og klient
  • Routing – Håndtering av URLer og navigasjon mellom disse
    Typisk vil serveren svare for den første sidevisningen, mens klienten tar seg av navigeringen mellom sidene, noe som gir stor forbedring i opplevd ytelse.
    Dette krever en god del testing både på klient og server
  • Serving av statiske filer

Det krever mye arbeid å få dette riktig.

Med et rammeverk får du et ferdig testet oppsett og kan fokusere på koden med én gang.

Hvilket rammeverk skal jeg velge?

Det finnes mange rammeverk for denne typen applikasjoner. Hvilket valg du gjør er ofte styrt av hva slags rammeverk og teknologi du allerede er kjent med og har kompetanse på.

Her er noen rammeverk: