Witam,
Zaczynając pisać kolejny projekt, zadałem sobie kilka pytań, a jednym z nich było czy powinienem użyć JavaScript MVC Framework do zbudowania aplikacji webowej. Jako że pewnie wielu z was zadało sobie lub zada podobne pytanie to, chciałbym wam przedstawić kilka ważnych informacji oraz zaprosić do dyskusji. Postaram wyjaśnić się różnicę pomiędzy aplikacją po stronie serwera oraz po stronie klienta, aby pomóc czytelnikom zrozumieć, jak ich projekt powinien być zbudowany.
Trochę teorii
Zanim odpowiemy sobie na tytułowe pytanie, chciałbym zbadać architekturę aplikacji po stronie serwera i klienta.
Mamy tu do czynienia z tradycyjną aplikacją po stronie serwera. W uproszczeniu zapytanie HTTP zostaje wykonane z przeglądarki użytkownika, następnie serwer przetwarza zapytanie, dynamicznie wprowadza dane do szablonu, a następnie HTML wraca do klienta.
W tym typie aplikacji wykonujesz to samo zapytanie na serwer, ale... kiedy ktokolwiek wykonuje interakcje na stronie np. kliknie w buttona, JavaScript określa, co potrzebuje do szablonu, czy zapytanie XMLHttpRequest powinno spowodować dostanie określonego szablonu i danych, które się w nim znajdą. Następnie JavaScript powoduje wywołanie AJAX i Żądanie XHR do serwera, aby uzyskać dane z powrotem. Funkcje zarządzania szablonami zostały przeniesione do klienta, więc dane i szablon zostanie odpowiednio dostosowany w jego oknie bez potrzeby przeładowania strony.
Jest wiele sposobów utworzenia aplikacji w ten sposób oraz wiele frameworków takich jak AngularJS, Ember.js i Backbone.js, które wszystkie są tego samego podejścia architektonicznego łączenia danych i szablonów w JavaScript po stronie klienta.
Ale czy potrzebuję tych wszystkich frameworkuf?
Nauczyłeś się używać JS do tworzenia niezbędnych walidacji formularzy, dodając pewne zachowania do swoich stron. Lubisz to albo.. niekoniecznie :) Jeżeli nie to wiesz, że nie tędy droga. API DOM jest raczej niezgrabne i trudne do zapamiętania. Zapewne lepiej użyć innego sposobu poradzenia sobie z tym problemem. Coś, co obniżyłoby poprzeczkę oraz wygodne przechodzenie przez elementy i dodawania zachowań.
Wow, pisanie w JS nabiera sensu! jQuery to świetna biblioteka, która ułatwia pracę z DOM-em. Dodawanie elementów stało się bardzo łatwe. Twoje strony ożywają i jesteś na szczycie świata (lub to, co czujesz). Fajnie.. ale projektując aplikacje inicjując wszystko w $(document).ready({...}) spojrzysz na kod i zobaczysz, że to jeden ogromny plik, z dużą ilością funkcji i wywołań zwrotnych oraz logiki. Wszystko na raz. Logika manipulacji DOM jest przemieszana z Ajaxem (żądaniami/odpowiedziami). Dodajesz dynamiczny HTML do kodu w tym samym miejscu, być może bez odpowiedniego systemu szablonów.
Gdy już zdecydowałeś się podzielić projekt na kilka plików stosując wzorzec MVC, aby uczynić kod bardziej do opanowania, projekt zaczyna się robić bardzo złożony. Wkrótce przychodzi do Ciebie żądanie, zmienia oznaczenia każdego postu w naszym systemie kolorowymi etykietami (coś jak tagowanie wiadomości z kolorowymi etykietami w Gmailu). Mówisz sobie, że ok, ale kiedy przechodzisz do analizy i chęci zaimplementowania, to zdajesz sobie sprawę, że aby to dodać musisz napisać wiele linii kodu z wieloma funkcjami/wywołanami zwrotnymi i powtórzeniami. Następnie udać się na stackoverflow z pytaniem, jak dany problem rozwiązać i czy jest lepszy sposób. Pisanie obiektowo w jQuery ułatwia życie i jest najlepszą drogą do dobrego zaprojektowania systemu. Można zdobyć ogromną satysfakcję. Nauczyć się dobrej organizacji kodu oraz sposobu jego działania, ale za wszystko bierzesz ogromną odpowiedzialność i piszesz dużo kodu od zera. Byłeś na drodze do napisania w pewnym sensie biblioteki, kiedy ktoś powiedział Ci o czymś takim jak framework.
Ta-dam! Ktoś zaprojektował świetne narzędzie, które umożliwia sprawne projektowanie aplikacji, co sprawia, że pisanie kodu jest o wiele łatwiejsze. Stan nirwany osiągnięty. Paradygmaty MVC świetnie organizują Twój kod. Stosując poprawną strukturę aplikacji, sprawia ona, że kod znacznie zyskał na przejrzystości oraz jest ponownego wykorzystania. Jest to znacznie łatwiejsze od zarządzania złożonością całego projektu. Kod jest bardzo przejrzysty dla Ciebie oraz dla innych, dzięki czemu zyskujecie na wydajności pracy. Wydajność to nie wszystko.. Szacunek ludzi z githuba też jest ważny.
A SEO to co?
Napiszę krótko. Robot indeksujący Google wykonuje JavaScript na przeszukiwanych stronach. Istnieje kilka kroków, które trzeba podjąć, aby upewnić się, że aplikacja jest uzyskiwana i indeksowana.
-
HTML5 Mode.
-
Skonfigurowanie serwera.
-
Sitemap.
-
Semantyka
Podsumowując:
Framework MVC pomoże Ci z takimi rzeczami jak:
Jak myślicie? Czy waszym zdaniem jest sens korzystania z javascriptowych frameworków MVC, a jeżeli tak to na jakim etapie? Zapraszam do dyskusji oraz do komentowania artykułu.
Polecam również zapoznać się z: https://www.youtube.com/watch?v=5NYJl0RtG4M
Dzięki :)