Menu

Single Page Applications

Gert Gert Braun heeft dit geschreven in mei 2014

De wereld verandert snel en gebruikers openen je site of applicatie steeds minder met een traditionele browser. Een site of app moet snel reageren, ‘snappy’ aanvoelen, fijn in gebruik zijn en eigenlijk altijd beschikbaar. Een mogelijke oplossing, de Single Page Application, zien we de laatste jaren steeds meer. Ook de tools voor het bouwen van een Single Page Application zijn de laatste jaren steeds volwassener geworden. Tijd om de SPA en de tools ervoor eens op een rijtje te zetten.

Wat is een Single Page Application?

Een Single Page Application (SPA) is een applicatie/site waarbij de pagina nooit in zijn geheel herlaadt. Voor de gebruiker is het één enkele pagina waarop alles gebeurt. Alle communicatie gebeurt onderhuids; uiteraard ziet de gebruiker continue nieuwe informatie, maar het gaat altijd om deeltjes van de site die worden geladen en getoond.


Voordelen

Een actie op een website veroorzaakt traditioneel een complete reload van de pagina. Heel veel elementen die je al zag, zie je opnieuw geladen worden. Bij een SPA worden alleen de elementen geladen die veranderen. Dit scheelt in dataverkeer en reactietijd. Omdat er maar een deel van de gegevens wordt geladen scheelt dit ook op de belasting van de server.

Veel SPA’s worden geschreven met een strikte scheiding tussen de voorkant (frontend) en de achterkant (backend/server). De communicatie vindt bij voorkeur plaats via een JSON API, waarbij de backend volgens standaarden met de frontend communiceert. Dit is een groot voordeel als er een tweede applicatie wordt gebouwd, zoals een native app. De backend is vaak al bijna klaar!

Nadelen

Het traditionele internetverkeer is helemaal afgestemd op de multi page variant. Dat zie je onder andere terugkomen bij de zoekmachines: deze gaan nog uit van de traditionele herladende pagina’s en zo crawlen zij dan ook voornamelijk de door hun bezochte websites. Van Google is inmiddels bekend dat ze redelijk goed kunnen omgaan met SPA's. Mits de SPA goed is opgezet, en alle links netjes gebruik maken van een eigen URL, wordt je website gewoon gespiderd.
Maar ook de backbutton in de browser is niet afgestemd op een SPA. Deze gaat uit van de vorige URL in je adresbalk. Ook hier geldt gelukkig dat een goede opzet het probleem oplost. Als elke actie de URL op de juiste manier aanpast, snapt de browser het wel.

Een SPA voert een groter deel van zijn code uit op de machine van de gebruiker. Deze omgeving kan echter enorm verschillen. Het is daarom nog belangrijker om op zoveel mogelijk omgevingen te testen en ook rekening te houden met wat minder bedeelde gebruikers.

Omdat een SPA, in tegenstelling tot volledig herladende pagina’s, continue ‘open’ blijft staan, moet je als ontwikkelaar plots ook weer gaan letten op geheugengebruik. Het geheugen kan vollopen, want dit wordt niet bij elke nieuwe pagina weer geleegd.

Ontwikkeling

De tools voor de ontwikkeling van een SPA zijn de laatste jaren steeds volwassener geworden. Met de introductie van AJAX en daaropvolgend jQuery ontstonden al de eerste websites die eigenlijk een SPA waren. De SEO en backbutton problemen werden mondjesmaat opgelost, maar kostten veel tijd om echt goed uit te werken.

Sinds enkele jaren zijn er echter grote frameworks gekomen die de opbouw van een volledige SPA ondersteunen. Er zijn er veel en als technisch bureau zul je daarom een keuze moeten maken waar je je expertise in opbouwt. We bekijken er een aantal: Ember, AngularJS en Backbone.


Backbone

Backbone is niet zozeer een volledig framework als wel een flinke set aan handige tools. Het wordt veel gebruikt door bekende namen als Twitter, Foursquare en LinkedIn. Dat het geen volledig framework is, zie je ook direct aan het formaat: 6.4Kb. Je mag als ontwikkelaar alles zelf bepalen in Backbone, en het is dan ook belangrijk om gestructureerd te werk te gaan.


Ember

Ember is verreweg het grootste framework en er moet 69Kb voor worden gedownload. Al met al natuurlijk nog kleiner dan een flink plaatje. Ember zit vol met ingebouwde ondersteuning voor allerlei handige functionaliteiten. Volgens de makers is een Ember website altijd te herkennen aan de laadsnelheid. Ten slotte heeft Ember een groot netwerk van ontwikkelaars voor support en is daarmee een interessant framework.


AngularJS

AngularJS is de oudste van de drie frameworks en wordt al lange tijd officieel door Google ondersteund. Bekende gebruiker is dan ook Google zelf, maar ook Nike, de Guardian en MSNBC gebruiken AngularJS. AngularJS dwingt een ontwikkelaar in een bepaalde stijl, een stijl die je code makkelijk testbaar maakt; soms vervelend tijdens het ontwikkelen, maar uiteindelijk vaak voordelig. Omdat het al wat ouder is (2009), heeft het de grootste gemeenschap aan ontwikkelaars en daardoor de meeste ondersteuning.

Ervaringen

Met backbone werken we eigenlijk al vrij lang. Ook wij merken steeds meer dat het inderdaad geen echt framework is, maar meer een samenraapsel van losse JavaScripts. Iets specifieks nodig? Zoek weer een andere los JavaScript bestand op om het op te lossen. Op de lange termijn zorgt dat toch voor een rommelig geheel. Ook mist backbone databinding, waardoor je elke keer zelf je resultaten moet afhandelen. De andere frameworks bieden dat wel.

Het afgelopen jaar hebben we ook veel ervaring opgedaan met AngularJS. De ondersteuning van Google garandeert voor een behoorlijk aantal jaren een vaste stroom aan vernieuwingen en bugfixing. De soms wat rigide manier van ontwikkelen blijkt ook al snel zijn vruchten af te werpen. Het leent zich uitstekend om in te zetten bij kleine onderdeeltjes voor een website, maar kan ook ingezet worden voor grotere volledige SPA-projecten. Het is een volledig framework met de mogelijkheid om externe JavaScript libraries te gebruiken.

Ten slotte

De keuze voor een SPA is nog erg afhankelijk van je wensen. De initiele opzet kan wel eens meer tijd gaan kosten dan een traditionele aanpak, maar de genoemde voordelen kunnen in de toekomst wel eens heel goed uitpakken. Al lange tijd voorspellen velen onterecht het einde van de native app, maar met de steeds professionelere tools en technieken kan een SPA steeds beter de strijd aangaan. Voorlopig kunnen ze er nog niet aan tippen, maar de veranderingen gaan snel.
Op het moment dat de App Stores SPA’s direct aan gaan bieden kan het hek van de dam zijn en het wel eens heel snel gaan.

Gert

Gert Braun

MANAGEMENT

E-mail:
gert@oberon.nl
Telefoon:
+31203449480

“We maken samen met onze klanten betere online producten, zowel voor het web als in mobiele apps”

Meer informatie op Oberon.nl