Mobilne Aplikacje z React
5 godz. 51 min · React Native · Full-stack i Programowanie
Piotr SzacińskiZarówno iOS jak i Android posiadają swoje natywne SDK, do obsługi którego musimy poznać nowe języki - Swift czy Kotlin, o Objective-C czy Javie nie wspominając. Z kolei React Native jest do tego świetną alternatywą, która pozwala tworzyć jeden kod na obie platformy. Dodatkowo - bazuje na najpopularniejszym frameworku webowym, co znacząco zmniejsza próg wejścia.
Tak samo jak "czysty" React, React Native opiera się na komponentach. Poznasz ich specyfikę i nauczysz się poprawnie budować UI aplikacji. Zrozumiesz też jak najwydajniej zarządzać skomplikowanym layoutem, takim jak długie listy, i jak to wszystko łatwo stylować.
Animacje to nie tylko efekty przyjemne dla oka - to przede wszystkim dobry UX, który pozwala użytkownikowi odnaleźć się w aplikacji i zrozumieć jej mechanikę. Podczas kursu poznasz wszystkie podstawowe metody i koncepcje tworzenia animacji oraz poznasz sposoby optymalizacji ich działania. Dodatkowo omówimy prawidłowe podejście do dużo bardziej skomplikowanych interaktywnych animacji, przedstawimy ciekawe biblioteki oraz best-practices.
Praktycznie każda aplikacja, niezależnie od tego, czy web, czy mobile, składa się z wielu widoków i ekranów. Zarządzanie ścieżkami, jakimi użytkownik może się poruszać, to jedna z najważniejszych rzeczy - a w tym kursie dowiesz się jakich narzędzi należy używać i jak łatwo obsługiwać zagnieżdżone ekrany.
Niewątpliwym atutem aplikacji jest to, że może praktycznie bez ograniczeń przechowywać content w urządzeniu telefonu, a przez to - dostarczać treści niezależnie od dostępności internetu. Omówimy różne koncepcje zapisywania danych oraz poznamy metody i narzędzia do ich wdrażania.
Przybliżymy ci proces wypuszczania aplikacji "w świat" oraz przedstawimy narzędzia, z których sam autor korzysta do ułatwienia tego procesu.
Kurs jest dla każdego kto zna podstawy JavaScript oraz React i chciałby się rozwijać i tworzyć mega ciekawe projekty, które mogą używać aparatu czy sensorów smartfona.
0.62.2+
Czyli udało nam się uruchomić nasza aplikację React Native wygląda całkiem fajnie mamy
trochę inny boilerplate niż w przypadku Expo ale o tym sobie jeszcze będziemy mówić natomiast to
o czym chciałbym teraz porozmawiać to o tym natywnym projekcie iOS-owym wprawdzie
on nie będzie wam potrzebny pewnie na początku przez długi czas natomiast fajnie
wiedzieć mniej więcej co tu się dzieje co oznaczają te foldery dlatego uruchomimy sobie naszego
xcode'a wejdziemy
sobie do folderu ios i uruchomimy projekt xcworkspace
w naszym folderze ios
tak i tutaj generalnie naszym workspace mamy 2 powiedzmy podprojekty pierwszy
projekt to jest nasz projekt pods i to jest to
jest tak naprawdę zbiór podprojektów naszych dependencji znaczy można
powiedzieć że ten pod file i cały ten ten projekt to jest coś jak package json
w przypadku Reacta czyli jak Native'a czyli mamy tutaj informację o tym
co chcielibyśmy doinstalować w jakich wersjach i tak dalej jak widać
już sam React Native dorzucił nam sporo dependencji które
są niezbędne do tego żeby nasz kod uruchomić choćby dlatego żebyśmy
wiedzieli jak żeby React Native wiedział jak ma pewne rzeczy layoutować
jak zapisywać obrazki i tak dalej czy na przykład jak korzystać
z narzędzi debuggujących natomiast moglibyśmy sobie tutaj w dowolnym miejscu dopisać
nasze depandencje jeśli potrzebowalibyśmy użyć ich tylko
wyłącznie w przypadku naszego projektu natywnego na iOS-ie jeśli
wejdziemy sobie w nasz TestProject i w folder TestProject to mamy tutaj parę parę
rzeczy pierwszym plikiem to jest nasz plik mine.jsbundle i to
jest plik z naszą logiką JS-ową czyli właśnie tym co
zostaje stworzone po zbundlowaniu naszego z
naszego kodu czyli po tym procesie który się dzieje o którym opowiadałem
na początku o tym jak działa React Native czyli nasz kod JS-owy zostaje zbundlowany
do takiego pojedynczego pliku i ten plik może być albo ładowany
statycznie z naszych zasobów albo właśnie serwowany
z serwera który sobie tutaj działa w tej chwili to wszystkio jest serwowane z serwera więc ten plik
po prostu jest jakiś tam wygenerowany natomiast my z niego w tej chwili nie korzystamy mamy
nasz folder assets gdzie mamy jakieś grafiki które możemy wrzucić to
jest ikonka aplikacji którą możemy sobie zmieniać jak widać potrzebne jest w
odpowiednich rozmiarach ponieważ potrzebuję tej ikonki na różnych rozdzielczościach w
różnych sytuacjach i tak dalej w tej chwili tej ikonki żadnej nie ma mamy
nasz plik info plist jest to dokument w którym trzymamy
takie bardzo ogólne informacje o aplikacji jak nazwa aplikacji jak wersja
jak parę innych rzeczy jeśli chcielibyśmy dodać jakieś no nie wiem informacje
o uprawnieniach które będą nam potrzebne czyli jesli chcielibyśmy korzystać z bluetootha
i tak dalej to tutaj musi byśmy takie informacje zawrzeć i parę innych rzeczy które
chcielibyśmy ogólnie globalnie do naszej aplikacji wprowadzić mamy
nasz launch screen to jest plik to
jest widok który jest ładowany odpalany w trakcie uruchamiania naszej aplikacji i
zauważcie że jeśli zamkniemy sobie naszą aplikację i uruchomimy
ją to dokładnie przez chwilę było widać ten widok czyli to jest to co się dzieje jeszcze zanim
odpali nam się faktyczny projekty xcode'owy poza tym
z takich istotnych rzeczy mamy nas plik AppDelegate tak jak mówiłem na początku
React Native w tej chwili generuje nam projekt w objective-c czyli
nie jest to raczej dla nas zbyt czytelne ale nie musi być teraz w żadnym stopniu ponieważ tak jak mówiłem
na pewno w początkowych etapach nie będziecie w najmniejszym
stopniu potrzebowali tutaj nic zmieniać ale i tak chciałem wam to pokazać być
może będziecie mogli do tego wrócić i żeby zrozumieć
co tu się dzieje z istotnych rzeczy tak naprawdę to jest ciekawa ciekawe
znaczy to jest właśnie to o czym mówiłem czyli jeśli pracujemy jeśli
nasz projekt widzi że pracujemy w trybie debug to
ładuje naszego bundla
z serwera tak czyli jakby szuka tak naprawdę URL-a
do naszego serwera który jest tutaj i będzie ładować tego bundla
powiedzmy to w locie natomiast jeśli wypuszczamy wersję realisową
czyli taką już z spaczkowanym js bundlem to on zostanie ładowany tutaj
na sztywno możemy polecieć jeszcze po takich bardzo ogólnych
ustawieniach projektu tutaj w zakładce general
po kliknięciu nasz projekt mamy ogólne informacje o
naszej aplikacji to znaczy mamy takie informacje jak nazwa aplikacji jak
identyfikator tej aplikacji jak wersja kodu wersja builda na
to takie informację czy chcemy wspierać tylko iphone'y czy również ipady jaką
chcemy orientację oczywiście może jeśli odznaczymy to w ten sposób to
nigdy nasza nasz telefon nie będzie nasza aplikacja nie będzie działać horyzontalnie
natomiast jeśli zaznaczymy sobie te opcje to jeszcze mamy możliwość ustawienia na przykład w kodzie że
jeden konkretny widok będzie się obracać a drugi już nie mamy jeszcze parę
innych opcji które możemy poustawiać ikonki i tak dalej tak naprawdę z takich podstawowych
ustawień które nas interesują to tyle z ciekawostek mogę jeszcze dodać pokazać
wam coś takiego jak jak build phases i to jest tak naprawdę zestaw instrukcji który
jest wywołany podczas budowania to znaczy najpierw budowane sa jakieś dependencies
później są kompilowane źródła coś tam jest linkowane ładowane są
assety i tak dalej natomiast ciekawa rzecz jest tutaj ostatnia czyli to jest bundle react native
code and images i to wywołuje skrypt który nam
uruchamia serwer bundluje nam naszego JS-a
jeśli jest to robione w trybie w trybie debugowym to
tak naprawdę nasz serwer zostanie postawiony czyli w praktyce oznacza to tyle
że jesli wyłączymy sobie nasz serwer i
zamkniemy naszą aplikację to tak naprawdę możemy
uruchomić nasz projekt tylko przy pomocy xcode'a to znaczy nie musimy w ogóle
korzystać z naszych skryptów które są tutaj w package jsonie
nie musimy w ogóle uruchamiać tych sktypów ponieważ one zostaną uruchomione z
poziomu xcode'a co ciekawe tak jak mówiłem na początku ten skrypt uruchamia
nam budowanie najpierw xcode'a czyli to jest tak naprawdę równe
sobie wywołania czyli z jednej strony możemy wywołać budowanie
projektów xcode'owego z poziomu naszego npm-a a z drugiej
strony możemy wywołać budowanie projektu a później bundlowanie naszego
kodu JS-owego z poziomu xcode'a wiec jesli sobie uruchomimy nasz projekt zobaczymy
że najpierw będzie trwało troszeczke szybciej już budowanie naszego projektu ponieważ po
pierwszym zbudowaniu xcode sobie scachował sporo rzeczy nie
musimy się przejmować za bardzo tymi warningami które się tutaj pokazują nasz
projekt został zbudowany zauważcie że projekt
się uruchamia to sekundkę jeszcze chwilę trwa w tym momencie następuje ładowanie
i mamy tak czyli możemy nasz projekt uruchomić równie dobrze z
poziomu xcode'a i znowu żeby nie oszukiwać żeby zobaczyć czy wszystko działa czy
działa nasz czy działa nasze refreshowanie to zmieńmy
sobie ten tytuł z hello na hi z wykrzyknikami zapiszmy
jak widać to wszystko działa czyli znowu podsumowując możemy
nasz projekt uruchamiać zarówno z poziomu xcode'a jaki i z poziom naszego naszych skryptów
i czasem po prostu jest to wygodniejsze jeśli pisalibyśmy jakiś
kod natywny poprawiali go to żeby on działał to musielibyśmy na
nowo budować projekt xcode'owy i czasem po prostu wygodniej ja w komercyjnych projektach
czasem tak robię że odpalam sobie nasz projekt stąd a ponieważ zmieniam sobie pewne rzeczy natywne
i wygodniej jest nam wtedy widzieć te
zmiany faktycznie no i przykładem takiej zmiany którą możemy zrobić to jest
proszę nasza aplikacja działa zarówno horyzontalnie jaki wertykalnie ale
no wymaganie jest takie żeby że tak naprawdę to nie musi działać w żaden sposób w innej
orientacji tak naprawdę chcielibysmy tą orientację zablokować oczywiście moglibyśmy ściągnąć odpowiednie paczki
do React Native'a i w odpowiednich ekranach je blokować ale najprościej będzie nam w
ustawieniach naszego projektu odznaczyć landscape left landscape right
żeby się tego nie dało żeby nasz projekt był
sztywno zawsze portretowy i uruchomić to jeszcze raz na pewno więcej ustawień
i więcej informacji na temat xcode'a znajdziecie w kursie o którym już wcześniej mówiłem odnośnie
podstaw iOS-a zobaczmy co się teraz stało
nasz projekt się zbudował jak widzimy po obrocie
już nasza aplikacja się nie obraca i w tym momencie już z poziomu React Native'a nie mamy
możliwości wymuszenia w jakimkolwiek widoku wersji
horyzontalnej no dlatego że jakby ona jest już tutaj na
sztywno zabita jako portretowa to jest
fajnie myślę że w początkowych etapach w ogóle wam się to nie przyda nie będziecie w ogóle wchodzić do
tego xcode'a natomiast myślę że po jakimś czasie będziecie mogli wrócić do tej lekcji jeśli
będziecie potrzebowali czegoś zmieniać coś zmienić właśnie w natywnym kodzie czy
właśnie takie ustawienia jak wersja portretowa to fajnie wiedzieć o podstawach