Zbliżam się do końca fazy prototypowania / weryfikacji koncepcji projektu pobocznego, nad którym pracuję, i próbuję podjąć decyzję w sprawie niektórych decyzji projektowych na większą skalę. Aplikacja to system zarządzania projektami, który jest bardziej dostosowany do zwinnego procesu rozwoju. Jedną z decyzji, które muszę podjąć, jest to, czy zdecydować się na tradycyjną aplikację wielostronicową, czy jednostronicową.
Obecnie mój prototyp to tradycyjna konfiguracja wielostronicowa, ale szukałem backbone.js, aby oczyścić i zastosować pewną strukturę do mojego kodu JavaScript (jQuery). Wygląda na to, że chociaż backbone.js może być używany w aplikacjach wielostronicowych, bardziej świeci w aplikacjach jednostronicowych. Próbuję wymyślić listę zalet i wad korzystania z podejścia do projektowania aplikacji na jednej stronie. Do tej pory mam:
Zalety
Wszystkie dane muszą być dostępne za pośrednictwem interfejsu API - jest to duża zaleta dla mojego przypadku użycia, ponieważ i tak chcę mieć interfejs API dla mojej aplikacji. Obecnie około 60–70% moich połączeń w celu pobrania / aktualizacji danych odbywa się za pośrednictwem interfejsu API REST. Wykonanie aplikacji jednostronicowej pozwoli mi lepiej przetestować interfejs API REST, ponieważ sama aplikacja będzie go używać. Oznacza to również, że wraz z rozwojem aplikacji sam interfejs API będzie się rozwijał, ponieważ właśnie z tego korzysta aplikacja; nie ma potrzeby utrzymywania interfejsu API jako dodatku do aplikacji.
Bardziej responsywna aplikacja - ponieważ wszystkie dane ładowane po stronie początkowej są ograniczone do minimum i przesyłane w kompaktowym formacie (takim jak JSON), żądania danych powinny zasadniczo być szybsze, a serwer wykona nieco mniej przetwarzania.
Niedogodności
- Powielanie kodu - na przykład kod modelu. Będę musiał stworzyć modele zarówno po stronie serwera (w tym przypadku PHP), jak i po stronie klienta w JavaScript.
- Logika biznesowa w Javascripcie - nie mogę podać żadnych konkretnych przykładów, dlaczego byłoby to złe, ale po prostu nie wydaje mi się, że logika biznesowa w JavaScript jest dostępna dla każdego.
- Wycieki pamięci JavaScript - ponieważ strona nigdy się nie ładuje ponownie, mogą wystąpić wycieki pamięci JavaScript, a ja nawet nie wiedziałbym, gdzie zacząć je debugować.
Są też inne rzeczy, które są rodzajem mieczy obosiecznych. Na przykład w przypadku aplikacji jednostronicowych dane przetwarzane dla każdego żądania mogą być znacznie mniejsze, ponieważ aplikacja będzie żądać minimalnej ilości danych potrzebnych do konkretnego żądania, ale oznacza to również, że może być znacznie mniej serwer. Nie jestem pewien, czy to dobrze, czy źle.
Jakie są zalety i wady jednostronicowych aplikacji internetowych, o których powinienem pamiętać, decydując, w którą stronę powinienem pójść w ramach mojego projektu?