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+
Okej czyli uruchomiliśmy sobie naszą aplikację zarówno z poziomu naszych skryptów
jaki z poziomu projektów natywnych no i teraz chciałbym wam pokazać
w jaki sposób możemy w jakiś podstawowych debugować naszą
aplikację do jakiejś podstawowej wersji no więc pierwszą informacją no to
chcielibyśmy dostawać na przykład informacje o logach tak więc wyświetlmy sobie tutaj loga
jakiegoś Start log
i zobaczymy że nasza
aplikacja w tej chwili jest tutaj uruchamiana na razie tylko w iOS-ie widzimy że nasz start
log pojawił się w naszym w logach naszego serwera no i gdzieś
tam na takich najprostszych rozwiązaniach to pewnie jest okej aczkolwiek no nie
jest do końca wystarczające bo jesteśmy w terminalu nie mamy tutaj możliwości filtrowania wyszukiwania
więc raczej to jest rozwiązanie na szybko jeśli chcielibyśmy tylko coś tam sprawdzi natomiast
z drugie strony jesli tych logów byłoby więcej to ciężko byłoby się w tym wszystkim połapać tak
więc mamy tutaj parę wiecej możliwości po pierwsze
możemy sobie wywołać nasz panel gestem potrząśnięcia albo command d
w OS X zdaje się że to jest command m na
androidzie mamy parę tutaj opcji
o pierwszym już powiedziałem to jest nasz reload który nam przeładowuje całą aplikację
mamy jeszcze parę innych rzeczy mamy takie informacje
jak performance monitor to jest coś co raczej
w trakcie tego kursu nam się nie przyda aczkolwiek może wam się przydać kiedyś w przyszłości
to w skrócie mówi o tym jak płynne są w tej chwili aplikacje
czyli pokazuje nam nasz wontek UI-owy i JS-owy to jest coś o czym mówiłem w
rozdziale o tym jak działa React Native i widzimy że w tej
chwili oczywiście mamy 60 fps-ów i to jest nasza docelowa wartość którą chcemy osiągać
to znaczy jeśli ta wartość spadnie do 50 paru to jeszcze nic strasznego się nie
dzieje natomiast jeśli dojdziemy zobaczymy że podczas przechodzenia między ekranami dojedziemy tutaj do 20
to najprawdopodobniej zaczynamy mieć jakiś problem ważne
jest to że w przypadku zwłaszcza symulatora
iOS-u to jest też istotna informacja mała
szansa żebyśmy zeszli poniżej 60 fps-ów jeśli już to zejdziemy to dopiero
w projekcie androidowym a to wynika z tego że nasz projekt jakby
symulator iOS-a jest symulatorem to znaczy on tylko symuluje nasze środowisko ale korzysta
z zasobów naszego komputera emulator natomiast teoretycznie bo to różnie bywa powinien
emulować ograniczenia jakie ma dany telefon natomiast i tak
najlepiej jeśli chodzi o takie rzeczy związane z performancem testować sobie na
urządzeniu w praktyce wygląda to tak że my podczas deploymentu developmentu
mamy jakiś telefon z androidem słabszy na którym testujemy
wszystko wszystkie animacje z takim performance monitorem dopiero na nim tak naprawdę widać jak
to wygląda bo jeśli byśmy całą aplikację robili na symulatorze albo
na jakimś iphone nowym albo na flagowcu androida to tak naprawdę gdzieś
tam zawężyli byśmy się i nie bylibyśmy w stanie zauważyć że w jakiś
przypadkach może to stwarzać problem natomiast na
tym etapie nam się to za bardzo nie przyda mamy tutaj możliwość konfigurowania naszego
bundlera czyli jeśli z jakiegoś powodu chcielibyśmy łączymy się domyślnie z
po local host jeśli chcielibyśmy coś zmienić to sobie możemy tutaj zmienić tego też nie będziemy na tym
kursie tykać mamy możliwość z wyłączenia fast refresha
to się może przydawać w sytuacji w której będziemy coś konfigurować
zmieniać z naszym stanem i nie chcemy żeby nasza aplikacja się przeładowywała w tle bo
będą wyświetlane cały czas jakieś błędy ale myślę że domyślnie możemy zostawić to włączone mamy
taką opcję jak inspektor to działa na tej zasadzie że klikając
na różne elementy możemy dowiedzieć się o marginesach
o jakiś tam podstawowych informacjach mamy też informacje o networku
i parę ogólnych informacji natomiast generalnie no
nie jest to moje ulubione narzędzie do debugowania bo no nie jest to zbyt wygodne
żeby to gdzieś tam wewnątrz tego symulatora nam latało więc raczej
w praktyce się z tego nie korzysta i mamy taką opcję debug
i ta opcja debug jest bardzo ciekawa jeśli sobie ją odpalimy to
zauważymy uruchomi nam się osobna zakładka najprawdopodobniej w chrome
w której będziemy mieli nasze logi tak jakby
byśmy odpalili naszą stronę internetową czyli w tej chwili to co się stało ja mogę to
jeszcze raz przeładować i pokazać zauważcie że mamy nasze logi
o tutaj coś się nie zbudowało jeszcze raz odpalimy mamy
nasz log start log i teraz to co się tej chwili dzieje to nasz kod
tak naprawdę tej aplikacji uruchamiany jest w silniku przeglądarki
a tutaj jest tylko prezentowany i to generalnie jest
okej bo jak widać już mamy dostęp do całkiem pokaźnego edytora
i debugera chrome'a natomiast minus ewidentnie
jest taki że nasz kod nie jest uruchamiany na tym urządzeniu i tak jak
w dziewięćdziesieciu pewnie pięciu procentach przypadków to nie zrobi nam różnicy tak są
sytuacje w których to rozwiązanie
będzie powodowało u nas pewne zdziwienie bo coś może nam tu nie działać
a coś może działać a później jeśli będziemy budować wersję release'ową to będzie działać troszkę inaczej
tak więc no z jednej strony jest to okej bo faktycznie mamy dostęp mamy dostęp do kodu
możemy sobie ten kod przeglądać natomiast i ja z tego wielokrotnie
korzystałem natomiast nie jest to rozwiązanie idealne aczkolwiek
ciężko było znaleźć jakieś lepsze w świecie React Native'a oczywiście mamy
coś takiego jak stand alone react devtools czyli
jakby taką takie narzędzie które już nie jest jakby debugerem w chrome tylko
możemy sobie jakby zainstalować osobną aplikację która będzie posiadała te logi i
parę innych rzeczy profiler i tak dalej natomiast dalej to się ograniczało do tego że
no nie było to narzędzie najlepsze i również nasz kod nie był uruchamiany na naszym urządzeniu ale na
szczęście ten kurs nagrywany jest już po tym jak wyszła wersja
React Native 0.62 i ta wersja całkiem sporo zmieniła dlaczego dlatego
że wyłączmy sobie też to debugowanie dlatego że od tej wersji natywnie
wspierany defaultowo jest Flipper Flipper
to jest takie dość zaawansowane narzędzie do debugowania aplikacji mobilnych natywnych
które od niedawna właśnie dostało wsparcie na React Native'a i to
jest o tyle fajne że pozwala nam nie korzystać z tej
opcji mode debuggera i odpalmy sobie tego Flippera zobaczymy
jak to będzie wyglądało tak jak widać w naszym Flipperze mamy
tutaj nasze logi mamy właśnie ten react devtools który też jest dostępny
jakby wewnątrz Flippera ale zaraz do tego przejdziemy i jak
widać mamy nasze logi które są naszego z naszej aplikacji czyli możemy sobie wejść
przeładować mamy dostępne nasze logi możemy sobie to filtrować czyli na przykład interesuje mnie
log start możemy sobie dodawać
countery czyli jeśli na przykład chcielibyśmy zliczać ile razy na log start się pojawił to
też możemy to dodać to jest fajne w przypadku jakiegoś takiego debugowania bardziej zagnieżdżonego
gdzieś gdzie chcielibyśmy sprawdzać czy coś tam się odpowiednio wywołało lub nie mamy
ez dostęp do naszego do naszych devtoolsów właśnie w których możemy mamy
podgląd na strukturę widoków i możemy na przykład wejść
sobie w nasz tekst tutaj mamy nasz tekst Hi Android and iOS i tak
jak w przypadku debugowania strony w przeglądarce możemy
sobie ten tekst zmienić na test title i
jak widać ten test title tu się nam zmienia możemy sobie nasz font na przykład na 32
czyli takie bardzo proste UI-owe rzeczy czasem nawet wygodnie jest robić tutaj
aczkolwiek jeśli korzystamy z fast refresha to
to też całkiem spoko to działa po prostu w emulatorze jeśli mamy
dwa monitory na jednym sobie uruchomimy naszą nasz symulator a na drugim
nasz kod to tak naprawdę to jakoś nie jest nie jest to jakiś game changer ale zawsze fajnie
na szybko możemy coś sobie zmienić i podpatrzeć całą strukturę tych widoków to
co jest fajne to to że jakby całe to narzędzie jest
Flipper jest stworzony również do aplikacji natywnych w związku z tym mamy
tutaj podgląd na wszystkie elementy natywne
tej aplikacji ponieważ tak jak wspominałem w rozdziale o tym jak działa React Native nasz kod
React Native'owy jest powoduje stworzenie tak
naprawdę natywnych komponentów w związku z tym zauważcie że jak mamy naszą strukturę widoków
React Native'owych czyli własciwie Reactowych to mamy
również odpowiednik natywnych widoków iOS-owych tak
czyli możemy sobie zobaczyć co w danym miejscu zostało wygenerowane przez
React Native tak widzimy że tu mamy nagłówek widzimy że coś co u
nas było jakimś komponentem jest tutaj zamienione na RCTView czyli
tak naprawdę natywny widok iOS-owy równie dobrze moglibyśmy uruchomić
sobie tą aplikację o tutaj sprawdzić to jak to wygląda w przypadku androida i tu też
mamy zupełnie inne już zauważcie mamy linearlayout mamy jakiś view które
które są wygenerowane właśnie na podstawie naszego kodu Reactowego i
to jest całkiem fajne co wiecej sam Flipper jest narzędziem dość
rozbudowanym pozwala nam zarządzać pluginam możemy sobie poinstalować mnóstwo pluginów
do tego żeby na przykład przeglądać połączenia network
tak żebyśmy mogli sprawdzać jak jakie jakie
pakiety wysyłamy co dostajemy w odpowiedzi możemy sobie doinstalować te pakiety to jest
każdy z nas może sobie dopisać tutaj swój plugin
co jest bardzo fajne i przyszłościowe bo jeśli weźmiemy pod uwagę
na przykład reduxa to też możemy znaleźć tu jakiś plugin który będzie nam
tego redaxa fajnie debugować mamy możliwość
poddania grafik jakie są cache'owane czyli na przykład tutaj mamy bitmapę
z naszym logiem które gdzieś tam jest w tle i widzimy że on tutaj jest możemy sobie odświeżyć
mamy całkiem całkiem sporo opcji możemy sobie przeglądać
nasze shared preferences więc jeśli chcielibyśmy jeśli zapisujemy coś do
waszej takiej shared preferences czyli takich szybkich szybkiego storageu
które jest na urządzeniu też możemy sobie to podejrzeć zarówno na iOS-ie jaki i na androidzie
no i tak naprawdę to narzędzie jest całkiem zaawansowane i będziemy z niego korzystać
w trakcie całego kursu przy czym raczej ograniczymy się tutaj do logów ewentualnie
do właśnie naszej struktury widoków z takich rzeczy które jeszcze warto
wspomnieć mówiąc o Flipperze to na pewno jest Profiler Profiler to jest takie narzędzie
które które pozwala nam sprawdzać w jaki
sposób w jakim czasie regenerują się poszczególne elementy tutaj na razie ten widok jest tak prosty że poza
startowym renderem nic się nie dzieje może później sobie to uruchomimy i sprawdzimy natomiast
jest to fajne przy badaniu wydajności czyli znowu jeśli uruchamiamy sobie
nasze naszą aplikację na jakimś androidzie i widzimy że coś nie do końca działa coś coś nie
jest do końca płynne i nie jesteśmy w stanie stwierdzić co to możemy sobie właśnie w tym profilerze
zobaczyć gdzie gdzie może być problem natomiast
tak jak mówię dla nas na razie najbardziej pożyteczną informacją będą właśnie
te logi tutaj mówimy o logach React Native'owych
bo możemy sobie również odpalić logi naszego
urządzenia o tutaj
musimy sobie nasz projekt jeszcze raz zbudować może
no w tej chwili nam się te logi nie wyświetlają natomiast jeśli mielibyśmy jakieś logi
iOS-owe czyli takie które są generowane z poziomu aplikacji
natywnej to te logi również również mielibyśmy do niej wgląd co na pewnym etapie może
nam się przydać zwłaszcza w przypadku jeśli nie wiem korzystalibyśmy z jakiś zewnętrznych bibliotek które
na przykład powodowałyby jakieś crushe i również mamy tutaj taką możliwość jeśli
jakiś kod natywny generuje nam crash to możemy sobie takie crashe logować i je sprawdzać
jest naprawdę Flipper jest całkiem całkiem rozbudowanym narzędziem
i na pewno będziecie go używać produkcyjnie i zachęcam was do
zgłębienia wszystkich tajników tego tego narzędzia my tak jak mówiłem
ograniczymy się raczej na razie tutaj do do tych logów to
myślę tyle jeśli chodzi o te podstawowe narzędzia debugujące