O webu
Bezstavové HTML

V dnešní době je poměrně běžné, že je webová stránka generovaná na serveru. Dále je poměrně běžné, že HTML kód stránky, který dorazí do prohlížeče, je odlišný pro různé návštěvníky.

  1. Nepřihlášený uživatel uvidí někde v menu přihlašovací formulář / odkaz na registraci.

    Nepřihlášený uživatel

  2. Nepřihlášený uživatel, co se na stránku „podepsal“ (např. poslal příspěvek), může mít předvyplněné jméno na základě cookies.

    Návštěvník se zapamatovaným jménem

  3. Přihlášený uživatel uvidí typicky odkazy na svůj profil, odhlášení a podobně.

    Přihlášený uživatel

  4. Přihlášený administrátor potom bude mít k disposici různé administrační nástroje.

    Přihlášený administrátor

Myšlenka bezstavového HTML je potom taková, že HTML kód pro všechny uživatele bude 100% stejný a potřebné rozdíly zajistí až JavaScript.

Technicky to proběhne třeba použitím JSONP – připojí se serverový skript, který ověří přihlášení a zavolá funkci pro vykreslení příslušného uživatelského rozhraní s předanými argumenty.

vykreslitMenu(
  {
    prihlasen: true, 
    administrator: true,
    jmeno: "Administrátor"
  }
);

Funkce vykreslitMenu na základě těchto hodnot sestaví příslušné menu.

Pochopitelně se může použít i obyčejný AJAX a výsledný HTML kód závislý na uživateli generovat na serveru a JavaScriptem ho jen vlepit na potřebná místa.

Výhody

Hlavní výhodou tohoto postupu je 100% statický obsah. Díky tomu může být načítání obsahu rychlejší – není potřeba žádná podpora programovacího jazyka na severu. Také není problém dlouhodobě kešovat celé HTML stránky.

V případě aplikace se stavovým HTML jde sice používat cache, ale jen pro určité části, navíc určitý čas zabere sestavení výsledné podoby (zvlášť při použití nějakého frameworku to může zdržet načítání i o desítky milisekund).

Mají-li navíc být uživatelské ovládací prvky různě po stránce (například volba Upravit u všech vlastních příspěvků), je nemožné kešovat větší souvislé finální bloky obsahu.

Nakonec vyhledávače uvidí jen samostatný obsah bez nerelevantních zbytečností jako je přihlašovací formulář a podobně, protože je vytvoří až JavaScript.

Nevýhody

Asi největší nevýhodou je nutnost načítání první stránky nadvakrát.

  1. Stáhne se bezstavové HTML.
  2. Zavolá se další JS požadavek pro získání stavu.

V kombinaci s načítáním obsahu všech stránek AJAXem to ale nemusí příliš vadit. Podstatná část (obsah) se načte díky statické podobě bleskurychle a při přechodu na další stránku se bude jen nahrazovat obsah ze statických souborů.

Další nevýhoda je nefunkčnost uživatelské části bez JavaScriptu, což ale v dnešní době většinou moc nevadí.

Odkazy jinam