( yetii | 2020. 09. 12., szo – 23:44 )

A végeredmény így is HTML lett, de nem egyszer szereltük össze szerveroldalon, hanem sokszor a kliensoldalon. 

A HTMLt mindenképp ugyanannyiszor rakod össze függetlenül attól, hogy kliens oldal-on van a HTML "generálva", vagy szerver oldalon. (A renderelést a böngésző végzi a HTML-ből, azt ne keverjük ide, az mindenképp ugyanúgy történik bármelyik oldalon is áll elő maga a HTML.) Persze előfordulhat olyan eset, hogy a HTML-t cache-elni lehet, és akkor elég a cacheből visszaadni, de a mai weboldalak töredéke lehet ilyen, többnyire teljesen egyedi oldal jelenik meg minden letöltéskor. 

Másrészt egyáltalán nem egyértelmű, hogy nem hatékonyabb ha a kliens oldalon építed a HTML-t, ugyanis így tényleg csak annyi adatmozgás történik a kliens és a szerver között, ami feltétlenül szükséges, míg a hagyományos JS nélküli HTML esetében minden egyes kattintásra a teljes oldalt újra kell tölteni függetlenül attól, hogy épp mekkora része változatlan az oldalnak. A felhasználói élményről nem is beszélve. Persze ez minden oldalnál egyedi, hogy épp melyik éri meg jobban, mondjuk egy híroldalnál jól tud működni a hagyományos HTML, de minél inkább elmozdulunk webalkalmazás irányba ez annál kevésbé lesz így. És azt akkor meg sem említettem, hogy gyakorlatilag ma már nem létezik olyan oldal, amiben ne lenne valamennyi JS.

 ehelyett: adat a szerveren -> HTML kód -> browser -> webpage, ez van: adat a szerveren -> JSON (vagy amit akartok) -> browser -> kliensoldali nem natív renderer -> webpage.

Azért ez így elég félrevezető, úgy érzem pár réteget minta lehagytál volna, de a valóság azért jóval bonyolutabb:

Első eset:

DB -> server / repository layer (-> server / service layer - egyszerűbb esetben ez kimaradhat)-> server / controller layer-> server / html generálás -> browser / HTML megjelenítés

második eset:

DB -> server / repository layer (-> server / service layer - egyszerűbb esetben ez kimaradhat) -> server / controller layer -> browser / html generálás JS-ből -> browser / HTML megjelenítés

És a meglepetés az, hogy igazából mindkét esetben ugyanannyi lépés / réteg van, gyakorlatilag tényleg csak annyi a különbség, hogy melyik oldalon áll elő a controllerből kijövő adatből a HTML. Persze nem mondom, hogy minden websitenak ilyen a felépítése (de azért az esetek túlnyomó többsége ilyen, az elmúlt 10+ évben gyakorlatilag ez az architektúra egyeduralkodó volt), de ahol nincsennek ilyen szépen meg a rétegek, ott is tipikusan ezek a lépések történnek.

Annak pedig a fejlesztési oldalon nagyon nagy előnyei vannak (fejlesztésnél, tesztelésnél és deploymentnél is), ha a kliens és a szerver oldal architekturálisan is el tud különülni ez az egyik fő oka annak, hogy mára ez az irány dominál.