Aktywne Wpisy

Francesco123 +129
Koorwa, rzuciłem luźną robotę w korporacji bo były 3 zmiany, zero stresu kon zwalony itd każdy wie o co chodzi, naczytałem sie k---a głupot że tak nie wolnoo, trzeba być ambitnym, nie można cale zycie siedziec w jednej firmie... i co? K---a poszedlem do prywaciorza bo jedna zmiana xD i jak myślicie jak jest? Jest k---a p--------e, c-----a umowa na zasadzie zarobisz jak bedzie premia uznaniowa a na papierku minimalna, kamer od

smutny_czlowiek +322
Treść przeznaczona dla osób powyżej 18 roku życia...





Jeszcze niedawno jak pisało się aplikację webową, to robiło się jeden projekt. Backend (np. w #spring lub #aspnet) i w tym samym projekcie robiło się frontend (jakieś Spring MVC z szablonami w JSP lub odpowiednik). Teraz robi się API REST i dzięki temu backend jest bardziej niezależny od frontendu (jakiś #angular #react czy coś innego).
I są dwa podejścia jak można do tego podejść.
1. Robimy dwa oddzielne projekty. Jeden backendowy (np. w Springu) a drugi frontendowy (np. w Angularze). Jak wdrażamy rozwiązanie, to musimy wdrażać obie aplikacje oddzielnie (np. jeden na Tomcata, a drugi na jakiś HTTP Server).
To jest dobre jak jest jedno API i wiele różnych aplikacji frontowych. Ale często tak jest, że jest po prostu jeden projekt i nie jest przewidywana inna aplikacja frontowa. A REST-a i Angulara się używa, bo jest wygodne. Dlatego dla wygody można to zamknąć w jednym projekcie:
2. Robimy jeden projekt backendowy. Piszemy sobie API i udostępniamy dodatkowo jeden publiczny folder. Wrzucamy tam cały folder z plikami frontendu. Jak wdrażamy takie coś, to wdrażamy tylko jedną aplikację (fizycznie są dwie, ale zamknięte w jednej). Jest to dużo wygodniejsze.
Jak używało się zwykłego JavaScriptu i np. starego AngularJS, to wszystko było ok. Teraz jednak używa się Gulpa/Webpacka czy innych builderów (do TypeScripta, Babela, SCSS itd. itd.). W jaki sposób wrzucić taki projekt frontendowy do projektu backendowego? Przypominam, że teraz front to nie tylko zwykłe pliki, które po zmianie wystarczy zapisać - teraz trzeba je jeszcze przekompilować.
Przyjmijmy, że używam Spring (Maven) + Angular 4 (Angular CLI, npm).
- Budować oddzielnie projekt frontowy i tylko skompilowany dist przerzucać do folderu w backendzie? Słabe, bo muszę kompilować dwa projekty (nie wspominając o pewnie problemach z hotswapem).
- Użyć jakiegoś buildera do Springa/Mavena (żeby on mi kompilował zamiast sam przez Angular CLI)? O ile takie coś istnieje. Słabe, bo uzależniam backend od frontendu.
- Coś innego?
Development:
- backend - developujesz i normalnie uruchamiasz.
- frontend - uruchamiasz na developerskim serwerze (praktycznie wszystkie narzędzia powinny coś mieć, Webpack ma na 100%) i developujesz z "hotswapem" (po każdej zmianie jest rebuild cząstkowy i refresh).
Deployment: deployujesz na dwa rożne serwery (dla backendu jakiś Tomcat, dla frontendu coś co serwuje statyczne pliki). W przyszlości pozwoli to np. zrobić wsadzić load balancer, cdny i inne dziwne
@elwin013: Tomcat nie jest serwerem tylko kontenerem servletów, nie zapewnia wszystkich funkcjonalności wymaganych do bycia serwerem javy. Serwerem jest np apache geronimo, oracle glassfish