SPA, MPA, request-response, HTTP(S), návratové kódy, metody HTTP

Webová stránka vs webová aplikace

Hranice je rozmazaná, ale principiální rozdíl je v tom, co uživatel s obsahem dělá:

Webová stránka Webová aplikace
Účel Zobrazení informací Vykonávání úkolů
Interaktivita Minimální (formuláře, odkazy) Vysoká (přihlášení, správa dat, real-time)
Obsah Převážně statický Dynamický, personalizovaný
Stav Pomíjivý Persistentní (user profile, data)
Příklad Blog, zpravodajský portál, dokumentace Gmail, Notion, Figma, e-shop

V praxi nejsou ostré hranice: zpravodajský web má komentáře (kus aplikace), aplikace má marketingové stránky (kus webu).

Architektury webových aplikací

CSR: Client-Side Rendering (= klasická SPA)

Server pošle prakticky prázdný HTML s odkazem na JS bundle. Veškerý rendering probíhá v prohlížeči poté, co se stáhne a spustí JavaScript.

image.png

Plusy Mínusy
Plynulé navigace (žádné refreshe) Pomalé první načítání
Snadné offline funkce Horší SEO bez prerendering
Klasická SPA architektura Vyžaduje JS, slabší zařízení trpí

Příklad: čistá React/Vue/Angular SPA bez SSR.

SSR: Server-Side Rendering

Server vyrenderuje kompletní HTML a pošle ho klientovi. JavaScript se pak "připne" k existujícímu DOMu (proces zvaný hydration).

image.png

Plusy Mínusy
Rychlé první načtení Vyšší zátěž serveru
Excelentní SEO Komplikovanější deploy
Funguje i bez JS "Hydration mismatch" debugování

Příklad: Next.js (App Router s getServerSideProps), Remix, Nuxt.

SSG: Static Site Generation

HTML se vygeneruje při buildu, ne při requestu. Server vlastně nepotřebuješ: výsledné soubory si CDN obslouží.

  1. Build time: pro každou URL se vygeneruje HTML
  2. Deploy: HTML soubory na CDN