178
« kdy: 30. 01. 2021, 12:01:23 »
Ad "dělí se na frontend a backend": V tom je trochu bordel. V poslední době mi přijde, že se názvosloví kloní k tomuto:
- backend: Poskytuje (REST) API, které volá frontend, buď ze serveru, nebo z prohlížeče, nebo z obojího
- (frontend) server-side: Renderování HTML na serveru
- (frontend) client-side: Vytváření HTML na klientovi
Předpokládám, že tebe budou zajímat ty dvě části frontendu.
Původně byl web jen server-side (statické stránky, stránky generované SSI, PHP, ASP.NET, JSP, atp.). Postupně se do něj kvůli interaktivitě dodělávalo víc a víc client-side, tedy Javascriptu (začalo to cca 20 let zpátky), vznikly knihovny jako jQuery atp. Nicméně jak se do client-side přesouvalo víc a víc funkčnosti, tak začal být nepříjemný problém s tím, že server-side a client-side technologie byly různé, což znemožňovalo sdílení kódu mezi nimi.
Tedy vznikly technologie, které umožňují udělat celý web client-side. Víc začaly být rozšířené tak před pěti lety, kdy vznikly věci jako Angular a React. Nicméně čisté client-side má taky své nevýhody. Velmi špatně na takových webech funguje SEO, aplikace se musí načíst, než uživatel něco rozumného uvidí atp.
Takže pokud chceš opravdu moderní webové technologie, tak jsou to ty, kterým se říká isomorfní a které spojují výhody server-side a client-side přístupu. Pro React ekosystém je to třeba Next.JS. První render aplikace proběhne na serveru. Uživatel dostane už vyrenderované HTML, takže rychle vidí aplikaci zobrazenou, stejně tak vyhledávače dostanou normálně HTML k indexování. Dál aplikace běží na klientovi, takže je tu i potřebná interaktivita. Přitom to všechno je jeden jazyk a jeden framework. Úplně bezešvé to není, člověk musí na sever-side myslet (třeba při používání window objektu, který na serveru logicky není dostupný), ale to je většinou pár míst v kódu.
Ohledně React vs Angular vs Vue je to tak, že Angular a Vue staví na technologii HTML šablon. To je přístup, který vychází se starších JSP / ASP.NET frameworků. Má výhodu v tom, že lidé, co ty starší technologie znají na ně snáze přejdou. React na to šel "od lesa" a strom komponent se tam generuje čistě funkcionálně, žádné HTML šablony. Mě to přijde jednodušší, pružnější a lépe využívající možností nové technologie, ale to je můj osobní názor.
Každopádně, celé je to velmi rozsáhlá problematika, lepší je, vybrat si nějakou z těch technologií a věnovat se jí víc do hloubky.