Frontend Development Quickstart Guide » Historie » Revize 7
Revize 6 (Václav Honzík, 2022-03-31 11:42) → Revize 7/12 (Václav Honzík, 2022-04-07 11:39)
h1. 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): <pre> npm install --global yarn </pre> 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> Samotnou aplikaci spustíme příkazem: <pre>yarn run start</pre> Aplikace ve výchozím nastavení poběží na portu 3000 na localhostu, tzn.: http://localhost:3000/ h2. 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 h2. 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 uchování stavu je potřeba vytvořit *reducer*, který 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. h3. Slice Slice označuje úsek stavu, který lze mezi komponentami sdílet - např. autentikace, načtené itemy, apod. Šablony, ze kterých stavem manipuluje = je možné vyjít jsou např. *userSlice.ts* (navíc obsahuje i persistenci do localStorage) a *catalogSlice.ts*. Slice vždy obsahuje jméno, reducers - dělají operace nad stavem, počáteční to funkce, která vezme aktuální stav (při startu aplikace) a případně extraReducers - pro thunks. Pro připojení slice do storu musíme získat akci a podle akce provede úpravu stavu. Jako template je vhodný soubor features/Auth/userReducer.ts. Následně je potřeba reducer ještě jeho "root" reducer a připojit ho do Reduxu - což lze udělat v modulu storu: store.ts přidáním jako atribut objektu ve funkci combineReducers, tzn. přidání myNewStateReducer bude následující: <pre> const store = createStore( combineReducers({ auth: authReducer, theme: themeReducer, myNewState: myNewStateReducer }), {} ) </pre> h3. 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.