Dzień dobry.
Od jakiegoś czasu tworzę aplikację internetowe, backend zbudowany na Spring Boot, a frontend na Angularze czy React'cie.
Nie wiem jednak, czy w takim projekcie właśnie backendowe API i frontend powinny być całkowicie odseparowane, czy powinno to być w jednym projekcie - jednym pliku .war który osadzam na serwerze?
Nie ma jakiejś ogólnej zasady. Możesz zrobić i tak i tak.
Dzięki za odpowiedź, zwykle umieszczałem właśnie w jednym projekcie, wszystkie pliki wrzucałem do katalogu /src/main/webapp, ale gdzieś wyczytałem, że powinno to być w src/main/resources/static. Czy to prawda? Jeśli tak to dlaczego w folderze static i czym się on różni od webapp?
o_O do static wrzuca się pliki które mają być dostępne "bezpośrednio" na serwerze, np. js, obrazki i takie tam. Ale nie wrzuca się tam raczej choćby szablonów, bo te mogą zdradzać niepotrzebnie szczegóły na temat implementacji.
dobrze, że autor zadal to pytanie bo właściwie sam sie nad tym całe zycie programistyczne zastanawiałem.. :)
ale doświadczenie podpowiada ze zalezy - jak masz zupełnie inny frontendowy team to zapewne bedzie to osobny projekt
jak frontend i backend jest robiony przez tych samych programistow fullstackowych to bedzie to w jednym
w domowych projektach robiłem na oba sposoby
w pracy zawsze było to połączone w jedno
ciekawi mnie czy jest jeszcze jakies kryterium przez które niektórzy decyduja sie na podzielenie na dwa osobne projekty?
@azalut skalowanie? ;) Możesz deployować N-backendów i M-frontendów i łączyć je sobie przez jakiś loadbalancer. Poza tym jeśli robisz jakieś backend-as-a-service i masz kilka zupełnie niezależnych frontów (np. mobile i web) to znów może nie mieć sensu upychanie tego razem.
Ja osobiście preferuję dwa oddzielne projekty bo potem można łatwo pewne rzeczy zaimplementować poprzez mikroserwisy. Generalnie argumenty @Shalom na temat skalowalności są chyba najbardziej celne...
Mam w pracy projekt rozbity na dwa, do tego używamy takiego tworu jak Zuul proxy.
Generalnie dwa. Im więcej osób pracuje tym bardziej dwa.
Co nie znacza, że nie można tego spakować potem do jednego war (lub jar). Ale to już deployment process - na release produkcyjny.
U mnie też dwa. O wiele łatwiej wtedy nam zrobić PipeLine na Jenkins a nie jakieś npm odpalane z poziomie Mavena. poza tym backendy można skalować niezależnie od frontu położonego jako static na ngix
Mam teraz projekt, gdzie robimy 3 fronty (z grubsza ta sama funkcjonalność :-) ) do jednego backendu. (dokładniej to 2 fronty mają już swój najlepszy czas za sobą - wchodzimy z 3ecim)