Projekt

Obecné

Profil

Frontend Development Quickstart Guide » Historie » Verze 11

Václav Honzík, 2022-04-24 17:58

1 1 Václav Honzík
h1. Frontend Development Quickstart Guide
2
3 2 Václav Honzík
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):
4 1 Václav Honzík
<pre>
5
npm install --global yarn
6
</pre>
7
8
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: <pre>yarn install</pre>
9
10 11 Václav Honzík
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:
11
<pre>python create_dev_env.py</pre>
12
13
Pokud bychom potřebovali konfiguraci pro deployment, použijeme skript *create_prod_env.py*.
14
15 1 Václav Honzík
Samotnou aplikaci spustíme příkazem:
16
<pre>yarn run start</pre>
17
18
Aplikace ve výchozím nastavení poběží na portu 3000 na localhostu, tzn.: http://localhost:3000/
19 3 Václav Honzík
20
h2. Adresářová struktura
21
22
* features - logické moduly v aplikaci - např. katalog, home, apod.
23
* swagger - kód vygenerovaný ze swaggeru přes gen:swagger skript
24
* utils - utilitní třídy, které se logicky nehodí do žádné features složky
25
26
h2. Sdílení stavu mezi komponentami
27
28 7 Václav Honzík
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.
29 1 Václav Honzík
30 7 Václav Honzík
h3. Slice
31 1 Václav Honzík
32 10 Václav Honzík
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:
33 7 Václav Honzík
34 1 Václav Honzík
<pre>
35 4 Václav Honzík
const store = createStore(
36 6 Václav Honzík
    combineReducers({ auth: authReducer, theme: themeReducer, myNewState: myNewStateReducer }),
37 4 Václav Honzík
    {}
38 1 Václav Honzík
)
39
 </pre>
40 7 Václav Honzík
41
h3. Thunks
42
43 10 Václav Honzík
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ů.