Dylemat w wyborze technologii

0

Hej,
zaczynam pisać pewien projekt i zastanawiam się jakie technologie wybrać. Kręcę się w PHP i Vue, znam je nieźle, choć bardziej PHP. Projekt byłby czymś w rodzaju serwisu z ogłoszeniami - generalnie założenie jest takie, że ruch z czasem byłby dość spory, więc chcę też myśleć o robieniu tego sensownie i optymalnie od początku. Obecnie potrzebna jest tylko wersja www, ale docelowo potrzebna będzie aplikacja mobilna jeśli tylko się uda.

No i teraz moim pytaniem jest jak się do tego najlepiej zabrać? Wydaje mi się, że najrozsądniej byłoby napisać front w Vue i API w PHP. Tyle że zależy mi jeszcze na dobrym pozycjonowaniu, więc pewnie jakiś SSR, kojarzę Nuxta, ale wiele w nim nie robiłem. Jak w ogóle z optymalnością tego? Czy taki Nuxt to dobry wybór i obsłuży spory ruch na froncie? Kojarzę też, że ma opcję wygenerowania statycznych plików, ale to raczej odpada, bo będzie dużo dynamicznych podstron, które ciężko będą się nieznacznie ale jednak zmieniać.

Także lepiej zrobić osobno frontend w Vue i Nuxt oraz API w PHP czy może napisać zwykły system gdzie PHP będzie zwracał normalnie HTML? Jak z wydajnością tego pierwszego rozwiązania, czy rodzi ono przyszłościowo jakieś problemy?

2

Nie martw się teraz za bardzo o spory ruch, bo taki najczęściej mają bardzo popularne strony. Nawet dla strony jak niniejsze forum wystarczy "trochę lepszy" komputer stacjonarny i będzie hulać.
Przy stronach z Reactem czy innym tego typu frejmłorkiem widziałem, że to JS po stronie klienta robi cały front a potem strzela JSONem po AJAX do jakiejś strony.

2

Za daleko myślisz. Zacznij od jakiegoś mvp czy w ogóle będą chętni z tego korzystać. Optymalizować można zawsze i robi się to przez cały czas.

0

Dzięki, też tak mi się wydawało, że chcę już zrobić za dobrze. Oczywiście optymalizacja jak najbardziej będzie robiona cały czas i to naturalne, ale czy jeżeli teraz zaczął bym to rozdzielać czyli postawił apke frontową osobno i do tego stoi w osobno to nie byłoby łatwiej już na przyszłość? Czy taki kierunek w ogóle jest okej czy nie ma sensu do niego podchodzić?

3

Kod piszesz tak by dalej rozszerzać ale nie siedzisz i nie myślisz 2 tygodnie jak to zoptymalizować pod 20k ludzi bo to nie ma sensu w tej chwili.

2

@marekm1: zauważ że jak postawisz osobno to będziesz miał dwie technologie do ogarnięcia. Z jednej strony więcej się nauczysz, z drugiej zmniejszasz szanse że aplikacja powstanie i na pewno przesuwasz termin jej ukończenia

1

@Kamil Żabiński Nie można tego z góry zakładać, u mnie proste mvp zawiera api, apke frontową, apke na androida i apke na iosa. Wszystko zależy od tego co się już wie i tego co rzeczywiście potrzebuje projekt by jego pierwsza wersja komukolwiek służyła.

2

Decyzja czy oddzielić front od aplikacji jest jak wojenka Linux - Windows: można gadać bez końca a i tak każdy robi swoje. Taką decyzję podejmuje się zależnie od projektu i często można nie przewidzieć czy to jest dobra decyzja. Za kilka lat może się okazać, że nie ma wsparcia dla jakiegoś frameworka albo trzeba dokonać dużej zmiany w kodzie i cały plan się sypie. Tak jest nawet w dużych firmach.
Najprostsza zasada o optymalizacji: rób jak najlepiej potrafisz, ale przynajmniej skończ projekt. Potem sobie go ocenisz i wyciągniesz wnioski. Nie możesz napisać apki lepiej, niż umiesz - to niemożliwe.

0

@mr_jaro: stąd właśnie mam ten dylemat, bo jak małe rzeczy można po kolei optymalizować, tak przepisanie całej aplikacji na nowo, bo np. będzie robione API i lepiej jakby front też już na nie przerzucić, trochę potrwa. W sensie wiem, że teraz nie zrobię wszystkiego super i nie ma to sensu, zastanawiam się po prostu czy ten początek nie powinien już być w stronę takiej frontendowej aplikacji, aby można to było łatwiej rozszerzać

@Kamil Żabiński to też prawda, w miarę i Vue i PHP ogarniam, ale w Vue czy Nuxt na pewno będę potrzebował się douczyć

@PerlMonk ok, rozumiem. Niestety wiem, że moim problemem jest dążenie do perfekcji. Wiem, że coś wiem, ale też wiem że wielu rzeczy nie wiem i zamiast robić szukam jakby to robić jeszcze lepiej i czy na pewno robię to dobrze... :P

1

Jeśli potrafisz to robić to zrób z api, to nie jest wielki problem. Na froncie korzystaj maksymalnie z gotowych komponentów najwyżej potem będziesz to optymalizował. Skoro znasz vue to rób vue + np laravel lub symfony.

0

Tak, znam i Laravela i Symfony. Vue też, ale trochę mniej, ale dam radę. "Korzystaj maksymalnie z gotowych komponentów" czyli?

1

Czyli jak robisz na vue i masz tabelki to zamiast pisać samemu tabelkę, paginacje, filtracje itp poszukaj tego jako paczki i dorzuć do projektu.

0

A no tak to jasne. Dzięki za pomoc.

2

@marekm1: Perfekcjonizm najczęściej to zło. Pewnie się nie pomylę pisząc, że wielu z forumowiczów to przechodziło. Perfekcjonizm jest dobry w przypadku kiedy nauczyłeś się wszystkiego i szukasz czegoś więcej.

0

Wiem o tym, bo sam widzę, że zamiast coś robić to tylko myślę i szukam jak to coś zrobić niby jeszcze lepiej, tylko ciężko mi się tego odruchu pozbyć, walczę :)

1

Bardzo pomaga rozłożenie na atomy i rozpisanie tego, co chcesz zrobić.Okazuje się, że jest dużo małych kroczków, które nienazwane, można przeoczyć w planowaniu. Oczywiście pewne plany mogą się zmienić w czasie projektu, ale mają plan wiesz jakie zmiany zachodzą. Powiedzmy, że zadaję ci pytania:

  1. Jaki jest cel projektu? Po co to robisz?
  2. Jaka jest wizja projektu? Tu rozpisujesz wszystkie funkcje swojego programu. To bardzo ważny punkt. Tu rozpisujesz co apka robi i przypadki użycia. Np.
    System jest odpowiedzialny za ...
    Użytkownik może przeglądać treść bez logowania. Żeby edytować wpis (wyjaśnić co to), musi się zalogować. Do tego służy formularz w belce na górze strony. Są dam dwa pola: użytkownik, hasło i przycisk zaloguj. Po zalogowaniu zostaje przekierowany na stronę (którą można zmienić w panelu admina).
  3. Czego chcesz użyć do zrobienia projektu?
  4. Jaka ma być struktura katalogów? (chyba najpierw katalogi robimy)

... i tak dalej. Tak naprawdę zaczynasz tu od napisania dokumentacji użytkownika a kod robisz pod nią.
Równie dobrze możesz ściągnąć jakiś prosty projekt z githuba i opisać komuś jak ma zrobić grę. I to ma być kompletny opis, żeby potem człowiek nie latał do ciebie z pytaniami. Proste? To popatrz
https://pl.wikipedia.org/wiki/Tetris
Sam opis gry to trochę tekstu a nie ma ani słowa o aplikacji. I ty chcesz to ogarnąć w myślach?. Nie ma mowy. OK, może gdybyś był wybitnie uzdolniony, ale wtedy nie zakładałbyś wątku na forum.

0

Tak, mam już coś w rodzaju dokumentacji, ale obecnie tylko funkcjonalnej i nie do końca kompletnej. Jednak akurat w moim problemie niczego to nie ułatwia :) Wiem co i dlaczego chcę robić, ale staram się być w tym jak najlepszy marnując czas na myślenie jak to zrobić lepiej technicznie, zamiast to po prostu robić, uruchamiać pomysł i próbować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1