Projekt

Obecné

Profil

Akce

Frontend Development Quickstart Guide

Pro spuštění frontendové aplikace je potřeba mít nainstalovanou (ideálně) nejnovější verzi YARN: https://yarnpkg.com/, který lze snadno nainstalovat přes NPM jež je součástí NodeJS (https://nodejs.org/en/). Yarn nainstalujeme následujícím příkazem (v rootové složce frontendu, tzn. /frontend):

npm install --global yarn

Následně můžeme příkaz yarn používat kdekoliv v konzoli (nicméně může být nutný restart). Před samotným spuštěním je potřeba stahnout všechny dependencies pro projekt, což provedeme příkazem:

yarn install

Před spuštěním pro lokální development je nutno vytvořit .env soubor, který bude mít správnou konfiguraci, což provedeme python skriptem create_dev_env.py (skript je funkční pro jakoukoliv verzi Pythonu od 3.7+). Tzn v terminálu zadáme:

python create_dev_env.py

Pokud bychom potřebovali konfiguraci pro deployment, použijeme skript create_prod_env.py.

Samotnou aplikaci spustíme příkazem:

yarn start

Aplikace ve výchozím nastavení poběží na portu 3000 na localhostu, tzn.: http://localhost:3000/

Adresářová struktura

  • features - logické moduly v aplikaci - např. katalog, home, apod.
  • swagger - kód vygenerovaný ze swaggeru přes gen:swagger skript
  • utils - utilitní třídy, které se logicky nehodí do žádné features složky

Sdílení stavu mezi komponentami

Pokud potřebujeme sdílet stav jinak než přes props (např. napříč více komponentami) musí se použít globální store objekt, který poskytuje Redux (redux/store.ts). Pro přehlednější kód se v projektu navíc využívá knihovna Redux Toolkit, který do značné míry zpřehledňuje a zjednodušuje Redux kód.

Slice

Slice označuje úsek stavu, který lze mezi komponentami sdílet - např. autentikace, načtené itemy, apod. Šablony, ze kterých je možné vyjít jsou např. userSlice.ts (navíc obsahuje i persistenci do localStorage). Slice vždy obsahuje jméno, reducers - dělají operace nad stavem, počáteční stav (při startu aplikace) a případně extraReducers - pro thunks. Pro připojení slice do storu musíme získat ještě jeho "root" reducer a připojit ho v modulu storu:

const store = createStore(
    combineReducers({ auth: authReducer, theme: themeReducer, myNewState: myNewStateReducer }),
    {}
)
 

Thunks

Thunks jsou funkce, které chceme aby se prováděli async - tzn. např. volání API a typicky se umisťují buď do vlastního modulu (userThunks.ts) nebo do stejného modulu jako slice. Opět lze vyjít z příkladů userThunks.ts pro implementaci základních API callů.

Aktualizováno uživatelem Václav Honzík před více než 2 roky(ů) · 12 revizí