• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Frontend w React oraz Backend Node (np Express) - Javascript, zasada działania

Object Storage Arubacloud
+1 głos
710 wizyt
pytanie zadane 1 grudnia 2022 w JavaScript przez DeJaVu Nowicjusz (160 p.)
Cześć! Żeby zostać lepiej zrozumianym, rozbiję moje pytanie na punkty:

1. Rozumiem, że można sobie utworzyć i wywołać - a potem odpalić serwer w Node, np za pomocą Express. Słucha on co się dzieje w domenie, na jakimś porcie.

2. Rozumiem, że aplikacja React zostaje utworzona jako swój niezależny byt, że można ją wywołać na serwerze.

3. Rozumiem, że można sobie zarówno na serwerze jak i po stronie klienta, na frondendzie tworzyć API, zapytania, komunikację. Rozumiem, że istnieje możliwość, aby utworzyć frontend w React na jednym porcie, a backend na innym - że istnieje coś takiego jak polityka CORS.

 

NATOMIAST:

Niestety, o dziwo, odpalając serwer w konsoli, pozwalając mu słuchać - niezależnie od tego czy frontend w React i backend w Node będą na tym samym porcie czy będą osobno na różnych, rozumiejąc że ten odpalony serwer sobie już funkcjonuje, w tym wszystkim nie potrafię dostrzec jak to się dzieje że on wie jak uruchomić część Reactową i wyświetlić ją. Jak to należy rozumieć, upraszczając, analogicznie do sytuacji że serwer rozumie jak odpalić np index.php (pomijając jakiekolwiek regexy) w głównym katalogu.

1 odpowiedź

+2 głosów
odpowiedź 1 grudnia 2022 przez Comandeer Guru (600,810 p.)
wybrane 1 grudnia 2022 przez DeJaVu
 
Najlepsza

Backend w Node.js na Expressie i aplikacja Reactowa to dwa oddzielne byty i zwykle użytkownik nie wchodzi w bezpośrednią interakcję z backendem. Stąd problem po prostu nie istnieje, bo ten backend nie decyduje, kiedy coś ma być renderowane.

Taki backend zwykle jest sprowadzany do roli REST API (lub API opartego o GraphQL), a więc do źródła danych. Aplikacja Reactowa wysyła do niego zapytania i jest odpowiedzialna za sensowne wyświetlanie tego, co takie API zwraca.

Dodatkowo aplikacja React może mieć własny "backend", który będzie odpowiedzialny za komunikację z takim backendem w Express.js, ale również – za server-side rendering. Czasami takie rozwiązanie nazywa się middleendem.

Zatem cała aplikacja może składać się z trzech warstw:

  • frontend – Reactowa aplikacja, z którą user wchodzi w interakcję,
  • middleend – backendowa część apki Reactowej, zajmująca się server-side renderingiem oraz komunikacją z API (jeśli np. wymaga ona uwierzytelniania kluczem i nie chcemy go wyciekać we frontendzie),
  • backend – aplikacja w Express.js (lub dowolnej innej technologii), która będzie służyła za REST/GraphQL API.

Jest też coś takiego jak MERN stack. Zwykle jest on ograniczony tylko do dwóch warstw – frontendu i backendu, bez warstwy middleendu. Wówczas aplikacja w Express.js zachowuje się jak "normalny" backend, czyli w chwili, gdy user wysyła żądanie pod jakiś adres, Express.js serwuje mu odpowiedź w postaci kodu HTML zawierającego też kod Reacta. Da się połączyć SSR Reacta z Expressem. Niemniej w dobie rozwiązań pokroju Next.js czy Gatsby zaryzykowałbym stwierdzenie, że się odchodzi od takiego typowego MERN stacku na rzecz nieco bardziej złożonych rozwiązań, które wykorzystują odrębny backend-API.

komentarz 1 grudnia 2022 przez DeJaVu Nowicjusz (160 p.)
Bardzo dziękuję Ci za tak szybką reakcję. Wiesz co, ale trochę o inne sedno mi chodzi.

Przyjmijmy, że mamy taką prostą strukturę aplikacji:

 

{

    Katalog: Backend - tutaj jest serwer Express

    Katalog: Frontend - tutaj jest front React

}

 

Uruchamiam serwer Express. No i jak to się dzieje, że Frontend który jest tak jakby obok, automatycznie zostaje obsłużony i wyświetlony użytkownikowi? Z czego to wynika? Skąd tak naprawdę serwer (tutaj Express) wie, że ma uruchomić plik HTML znajdujący się w katalogu public w aplikacji React, która znajduje się w katalogu Frontend?

 

:)
1
komentarz 1 grudnia 2022 przez Comandeer Guru (600,810 p.)

Bo user wysyła żądanie pod jakiś adres, np. domena.pl/ i serwer widzi, że chodzi o ścieżkę / (czyli główną). Więc wtedy po prostu serwuje plik index.html z katalogu public.

komentarz 1 grudnia 2022 przez DeJaVu Nowicjusz (160 p.)

Czyli tak. Po kolei:

1. Tworzę serwer express

2. Tworzę aplikację React, wskazuję w expressie plik /Frontend/public/index.html dla ścieżki /

3. Wgrywam aplikację pod jakąś domenę - obejmując wszystkie warstwy front + back

4. Odpalam serwer express, on nasłuchuje, umożliwia mi wejście na stronę

5. Wchodzę pod domenę i to właśnie ze względu na działanie w pkt 2 uruchamia mi się mój front end w React

 

Tak to powinienem rozumieć? Bo jeśli nie, to będzie oznaczało że nie rozumiem : D

1
komentarz 1 grudnia 2022 przez Comandeer Guru (600,810 p.)
No tak, w najprostszym przypadku działa to mniej więcej tak, jak opisałeś.
komentarz 1 grudnia 2022 przez DeJaVu Nowicjusz (160 p.)
Serdeczne dzięki! : )

Podobne pytania

0 głosów
2 odpowiedzi 311 wizyt
pytanie zadane 2 marca 2023 w Hostingi, domeny, usługi przez eMe Początkujący (340 p.)
0 głosów
2 odpowiedzi 376 wizyt
+1 głos
0 odpowiedzi 287 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...