Jak zaprojektować apkę SPA w React? (1)

Kilka luźnych tipów (chcę je później zebrać w coś bardziej zorganizowanego, na razie tak tylko sobie piszę).
  • kartka twoim przyjacielem. Jak chcesz, to możesz korzystać z apek do diagramów (będzie łatwiej się podzielić z innymi), anyway chodzi o to, żeby sobie rozrysować to wizualnie, co będziesz mieć w tej apce, jak będzie się to wszystko ze sobą wiązać i komunikować.
  • pomyśl o rodzajach danych. - nie wiem, czy to dobre słowo, bo nie chodzi mi o typy danych. Napisałbym struktury danych, ale też nie chodzi mi o struktury danych typu drzewko, graf. Bardziej o to, jakie obiekty dziedzinowe będziesz mieć w apce reprezentowane przez jakieś obiekty. Np. w apce todo list możesz mieć:
    • Task - pojedyncze zadanie z polami `text` czy `isDone`
    • TaskList - lista tych zadań
    • FilterCryteria - czyli które zadania mają być wyświetlane
    • Project - np. "Zrobienie zakupów" to może być projekt, z zadaniami typu "kup mleko", "kup mięso"
    Niektóre zadania będą reprezentowane też przez komponent React, ale jednak nie należy tego mylić. Chodzi o koncepcję dziedzinową, która może być reprezentowana zarówno przez komponent jak i np. obiekt w stanie czy endpoint na backendzie.
  • warto oddzielać od siebie:
    • widok - jak coś ma wyglądać
    • interakcje - np. jak użytkownik kliknie przycisk "add todo", to tworzy się nowy obiekt Task
    • logikę - np. jeśli task jest ustawiony jako zrobiony to automatycznie leci do listy "done"
    • dane - czyli np. "drzewko stanu" czy "JSON pobrany z serwera"
    • poszczególne widżety - przez widżet mam na myśli drzewko skojarzonych ze sobą komponentów. Warto, żeby takie widżety działały niezależnie od siebie.
    przy czym podział "interakcja vs. logika" może być mylący (bo wydaje się to podobne), ale chodzi mi o to, że logika to bardziej coś niezależnego od samego GUI, a przez interakcję mam na myśli konkretnie coś, co reaguje np. na kliknięcia i coś odpala (używając metodologii MVC można powiedzieć, że przez logikę mam na myśli model, a przez interakcję mam na myśli kontroler). Ew. można nazwać interakcję "logiką GUI".
  • myśl w kategoriach przepływu danych. Czyli skąd dane płyną (np. z serwera) w jaki sposób są rozsyłane po komponentach, w jaki sposób się zmieniają. Od tego zależy działanie całej apki! I jak później coś nie sztymuje, to często okazuje się, że gdzieś nie do końca przepływ danych jest przemyślany. I później pewne dane nie docierają tam, gdzie trzeba albo wręcz przeciwnie - docierają kilka razy, co może spowodować race condition czy kilkukrotne przerenderowanie się komponentów itp.
  • Komentarze

    Popularne posty z tego bloga

    Dlaczego nie da się nadgonić frontendu

    Absurdy Rekrutacji 2023

    Przygody juniora (1)