Od dłuższego czasu zajmuję się programowaniem internetowym i gdzieś straciłem orientację, dlaczego robimy to, co robimy dzisiaj (lub jak zaczęliśmy robić rzeczy w ten sposób)?
Zacząłem od podstawowego programowania stron ASP i bardzo wcześnie logika wyświetlania i biznesu była na stronie mieszana. Rozwój po stronie klienta był bardzo zróżnicowany (VBScript, różne warianty JavaScript) i otrzymaliśmy wiele ostrzeżeń o sprawdzaniu poprawności po stronie serwera (dlatego trzymałem się z dala od logiki po stronie klienta).
Potem przeniosłem się na chwilę do ColdFusion. ColdFusion był prawdopodobnie pierwszą platformą programistyczną, która oddzieliła logikę wyświetlania i biznesu za pomocą swoich tagów. Wydawało mi się to bardzo jasne, ale bardzo szczegółowe, a ColdFusion nie cieszył się dużym popytem na rynku, więc ruszyłem dalej.
Następnie wskoczyłem na wagon pasmowy ASP.NET i zacząłem stosować podejście MVC. Uświadomiłem sobie również, że Java wydaje się być językiem wieży z kości słoniowej dla systemów korporacyjnych, i wypróbowałem również ich podejście MVC. Później ASP.NET opracował ten wzorzec projektowy MVVM, a Java (a konkretnie J2EE lub JEE) również miała problemy i wyszła z podejściem MVC2.
Ale dzisiaj odkryłem, że programowanie zaplecza nie jest już tam, gdzie jest podniecenie i postęp. Ponadto praktyki MVC oparte na serwerze wydają się być przestarzałe (czy ludzie naprawdę już korzystają z JSTL?). Dzisiaj w większości projektów, w których pracuję, dowiedziałem się, że frameworki JavaScript i programowanie po stronie klienta są miejscem, w którym robione są wszystkie fascynujące i innowacyjne postępy.
Dlaczego nastąpiło takie przejście od rozwoju serwera do klienta? Zrobiłem prostą liczbę wierszy jednego z moich projektów JEE i w JavaScript jest więcej wierszy kodu niż Java (z wyłączeniem bibliotek stron trzecich). Uważam, że większość programowania backendowego przy użyciu języków programowania, takich jak Java lub C #, polega po prostu na stworzeniu interfejsu podobnego do REST, i że wszystkie ciężkie wysiłki związane z wyświetlaniem, wizualizacją, wejściem / wyjściem danych, interakcjami użytkownika itp. Są rozwiązywane poprzez frameworki po stronie klienta, takie jak Angular, Backbone, Ember, Knockout itp.
W erze przed jQuery widziałem wiele diagramów, w których istniała wyraźna, konceptualna linia między M, V i C w MVC w rozwoju n-poziomów. Post-jQuery, gdzie są rysowane te linie? Wygląda na to, że MVC i MVVM działają poprawnie w kodzie JavaScript po stronie klienta.
Chcę wiedzieć, dlaczego dokonaliśmy takiego przejścia (z nacisku na programowanie po stronie serwera na stronę klienta, z faworyzowania języków skompilowanych na języki skryptowe, z programowania imperatywnego na funkcjonalne, wydaje się, że wszystko to miało miejsce jednocześnie ) i jakie problemy rozwiązało to przejście / zmiana?