# Alkalmazásfejlesztés ## Segédlet alap expo projekt létrehozására [React native](https://reactnative.dev/) npx create-expo-app@latest npm run reset-project npx expo start ## Natív fejlesztés Natív eszközökkel történik ### Előnyök: - **Jobb teljesítmény:** - Közvetlen hozzáférés a hardverhez - **Legjobb UI:** - Natív UI komponensek, gyorsabbak - **Jobb integráció az OP rendszerrel:** - Teljes hozzáférés a platformspecifikus APIkhoz ### Hátrányok - Magas fejlesztési költségek: - Két külön csapat kell IOS, Android - Hosszabb fejlesztési idő - két különböző kódbázis karbantartása ás fejlesztése ### Fejlesztőeszközök - IOS - Swift ## Hibrid fejlesztés A hibrid alkalmazások alapvetően webes technológiára épülnek (HTML , CSS , JS), és egy natív konténeren (Webview) futnak. A legismertebb megoldás a Cordova Ionic vagy Capacitor. ### Előnyök - Gyorsabb fejlesztés - könnyebb karbantartás - egyszerűbb tanulási görbe ### Hátrányok - Lassabb teljesítmény - Mivel a WebView rendereli az appot az animációk és válaszidők lassabbak lehetnek - korlátozott hozzáférés a natív API-khoz - bár vannak pluginek, nem mindig olyan hatékonyak, mint a natív fejlesztés. ### Fejlesztői eszközök - Ionic + Capacitor (TS, Angular / REACT / Vue) - Apache Cordova - Quasar Framework (Vue.js alapú hibrid fejlesztés) ## Cross Platform fejlesztés A cross platform fejlesztés lehetővé teszi, hogy egy kódbázisból natív alkalmazásokat készítsünk Androidra és IOS-re. Ez a megoldás modernebb, mint a hibrid alkalmazások, mivel natív teljesítményt nyújt. ### Előnyök - Közeli natív teljesítmény - Az alkalmazások közvetlenül fordulnak le natív kóddá - Közös kódbázis - Egyszer kell megírni, és működnek IOS és-en és Androidon is - Gyorsabb fejlesztés és olcsóbb fenntartás - Nem kell két külön csapat a fejlesztéshez ### Hátrányok - Nem mindig éri el a teljes natív élményt - Bizonyos natív funkciók elérése extra fejlesztést igényelhet - Néha nagyobb méretű alkalmazások - A runtime és egyéb könyvtárak növelheti az alkalmazás méretét ### Legnépszerűbb cross-platform technológiák - Flutter (Dart alapú) - React Native (JS/TS) - MAUI (C#) - Kotlin ## Fejlesztői környezet kiválasztása és telepítése ### 1. Natív fejlesztés - Android Studio - XCode ### 2. Hibrid fejlesztés - VSCode, WebStorm - Node.js NPM ### 3. Cross-platform fejlesztés - Flutter (flutter.dev) - React Native: Node.js + Expo vagy React Native CLI - Maui / Xamarin: Visual Studio + .NET SDK A telepítés után az adott fejlesztői környezet dokumentációját érdemes átnézni a pontos konfigurációkhoz. ## Összegzés - Ha maximális teljesítmény és natív élmény kell akkor natív fejlesztés a legjobb (Swift, Kotlin) - Ha időt és erőforrást szeretnél spórolni, akkor cross-platform megoldás (Flutter, React Native) jobb választás lehet - Ha webfejlesztőként szeretnél mobil appokat is készíteni, akkor a hibrid megoldások (Ionic Cordova) jöhet szóba ## Komponensek A react native egy népszerű keretrendszer, amely lehetővé teszi a mobilalkalmazások fejlesztését JS vagy TS nyelvben. Ebben a részben az alap komponensekről lesz szó ### View - konténer komponens - A Vire a React Native egyik legfontosabb komponense. - Hasonló a HTML `<div>` eleméhez - Konténerként használjuk más komponensek csoportosítására és elrendezésére ` <View style={styles.container}> <Text>Komponens tartalma</Text> </View> ` - A `style={styles.container}` beállítja a megjelenést - A `View` egy keretet biztosít, amelyben más komponensek lehetnek. ### Text - Szövegmegjelenítés - A *Text* komponens segítségével szöveget jeleníthetünk meg. - Stílusokkal formázható `<Text style={styles.title}>Komponens tartalma</Text>` A text komponens alapértelmezetten blokk szintű, de stílusozható. A `style={styles.title}` segítségével testre szabhatjuk a szöveg stílusát ### Button - Gomb - Egy egyszerű gomb, amely műveletek végrehajtására használható `<Button title="nyomj meg" onpress={() => alert("gomb megnyomva")}></Button>` ## Fejlesztés ### Képernyők közötti váltás (Stack.Navigator) A `stack Navigator` egy olyan navigációs módszer, amely egymásra helyezett (stackelt) képernyőket kezel. Hasonló a böngésző előre - hátra navigációjához,ahol az új képernyő egy veremre kerülnek. #### Hogyan működik: - Az első képernyő a főképernyő (HomeScreen) - A további képernyők erre épülnek, és visszaléphetünk az előző képernyőre. ### Adatátadás képernyők között (navigation.navigate()) Az átadás egyik képernyőről a másikra a navigation.navigate() metódus segítségével történik. Ezzel egy másik képernyőre ugrunk és átadtunk egy adatot. `<Button title="Tovább" onPress={() => navigation.navigate("Details", {text: userInput})} />` ### Visszanavigálás (navigation.goBack()) `<Button title="Vissza" onPress={() => navigation.goBack()} />` A React alkalmazásokban az állapotkezelés kulcsfontosságú szerepet játszik. Két népszerű megoldás létezik erre: - Context API (Beépített React funkció) - Redux (különálló könyvtár) ### Mi az a Context API? A context API egy React beépített állapotkezelője, amely lehetővé teszi az adatok globális tárolását Redux vagy más könyvtárak használata nélkül. ### Hogyan működik? A context API 4 fő részből áll - createContext() - Provider() (Context.Provider) - Az adatok megosztására szolgál - Consumer (useContext()) - Az adatok elérésére szolgál - State kezelés (useState) - Az értékek dinamikus módosítására szolgál ### Mi az a redux A redux egy globális állapotkezelő könyvtár, amely segít az adatok tárolásában és a komponensek közötti adatkommunikációban. Használata akkor előnyös, ha az alkalmazásban sok adatot kell kezelni. #### Csomagok telepítése `npm install @reduxjs/toolkit react-redux`