ReactJS na serveru rubrika: Programování: JavaScript
Zdravím, nasadil jsem ReactJS do expressu jako view když mi došlo, že v tu chvíli nevyžiju React v jeho plné kráse.
Respektivě se v response vrátí čistě vygenerované HTML které nemá ponětí o eventech apod. Takže se v tu chvíli jedná opět o aplikaci request -> repsonse.
Má otázky zní, jaké je ideální best practice?
1) Opravdu všechny komponenty vykompilovat do souboru, zavolat si ho a renderovat HTML u klienta? (podstata Reactu a všech jeho vymožeností)
2) Má v tu chvíli smysl s Reactem používat třeba Express s jeho routama, controllerama apod. když aplikaci v rámci reactu nerequestuju ale jenom měním view a potřebuju jenom api pro komunikaci?
3) Má všeobecně smysl React na serveru? (Když React v plném rozsahu pracuje u klienta a ne na serveru)
Díky moc
React ma pro server 2 zasadni funkce React.renderToString a React.renderToStaticMarkup. Ta prvni vrati stejny DOM (vcetne react data-react-id atributu) jako kdybys zavolal React.render v prohlizeci. Pokud si tedy vystup z renderToString posles do prohlizece a nasledne (po dotazeni a spusteni JS) nad tim zavolas React.render, tak React uz jenom povesi event handlery. Ve vysledku tedy uzivatel (i treba vyhledavac) ihned vidi celou stranku i s vypnutym JS, po dotazeni JS zacnou fungovat udalosti (tu prodlevu nejspis uzivatel ani nepostrehne). => Idealni a velmi vykonne. Teoreticky bys mohl timto zpusobem podporovat plnou funkcionalitu i se zakazanym JavaScriptem. Vsechny formulare by delaly klasicky GET/POST reload, pokud by se nenahral JavaScript, ktery by to pomoci .preventDefault() zakazal a poslal XHR. React.renderToStaticMarkup nepridava data-react-id atributy. Hodi se pro casti DOMu, ktere nebude spravovat React (napriklad html hlavicka..).
- Nic do souboru kompilovat nemusis, muzes rovnou renderToString posilat v odpovedi na jednotlive route requesty. Vsechny vymozenosti Reactu mas k dispozici i na serveru (deklarativni zapis, sablony jako JS, kompozice komponent...).
- To moc nechapu. React ma smysl na serveru i pokud by cela frontend aplikace bezela bez JavaScriptu (staticke stranky). Porad se ti hodi silny sablonovaci nastroj... muzes pouzit React stejne dobre tak jako Latte (imo lepe). A pokud se jednou rozhodnes, ze FE stranky budou vice interaktivni, tak to budes mit zadarmo.
- Ano. V server rezimu funguje jako skvely sablonovaci nastroj a nabizi moznost budouci snadne interaktivity.
React (react-dom) v prohlizeci je dnes uz jen jedna z aplikaci. Existuje react-native pro Android i iOS. React pro terminal. React pro desktopove aplikace. A hadam ze brzo bude treba i v televizi ci hodinkach. Tezistem je hlavne odlisny pristup v navrhovani a spravovani uzivatelskych rozhrani (ci obecneji komponent). Cilova platforma je uz jen "implementacni detail". (Nechci tu sirit nejakou nabozenskou React vlnu, ale coz... stejne uz jsem tak zaskatulkovanej.)
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře