Větší část logiky se vykonává na straně klienta, klient při načtení obdrží skoro celou aplikaci a data si aplikace získává pomocí API.
Frameworky (AngularJS a další) se snaží většinu logiky přesouvat na klienta
- celá aplikace je pak na straně klienta - takže dokáže fungovat i bez přístupu i internetu (dokud nepotřebuje akci z BE)
- ale je potřeba BE část (např. API), kvůli perzistenci dat apod.
- zajišťují routování, tracking historie, perzistenci dat na straně klienta, komponenty
React už padá, Vue.js je teďko populární (ale nebude na dlouho)
Teďko se zase zpátky přiklání k server-side renderingu (takže přesun většiny aplikace na server zpátky)
SPA výhody
- výhodou je zacachování statických dat (jenom jednou se načtou celé)
- rychlejší respozitivita
- přijdou jen potřebná data, překreslí se jen část aplikace (díky zvládnutému AJAX)
- uživatelsky přívětivé
SPA nevýhody
-
to že to jde, to neznamená, že se to dělá (dělat server-side rendering pomocí JS frameworku)
-
nějaké aplikace jsou JS-only, takže nejsou připravené pro čtečky např. pro slepé…
- a když má uživatel vypnutý Javascript, tak se nezobrazí nic
-
pomalé - když není optimalizované posílání dat
- např. posílání formátovaných JSONů
- lépe posílat neformátované, ideálně v binární podobě
- např. posílání formátovaných JSONů
-
pokud píšu appku pro svůj server, můžu to optimalizovat
-
pokud to píšu tak, že to poběží u klientů (mobil, notebook, hodinky, počítač atd.) - je horší optimalizace
-
vyskytují se typické problémy Javascript/AJAX
- většinu z nich vyřeší frameworky
- browser history (pushState, replaceState)
-
když přidám novou část/funkcionalitu, je potřeba přenačíst celou aplikaci (což se u SPA běžně neděje)
-
horší SEO než MPA
Když vyvíjím aplikaci, nepočítej s tím, že to bude jednorázová aplikace - je potřeba být připravený na rozšiřování a udržování
- kvůli bezpečnosti - průběžné aktualizování balíčků
Rozdíl oproti MPA (multi-page application)
- MPA se skládá z více stránek, mezi kterými se přechází pomocí odkazů, tedy při změně stránky se načítá ze serveru znovu celá stránka
- MPA jsou starší, tradičnější a nejsou tak uživatelsky přívětivé
- naopak, ale mohou být lepší v SEO, protože každá stránka má svoji URL, název, metadata apod.
- jsou jednodušší na údržbu než SPA