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+
Jeszcze jest jedna kwestia zanim przejdziemy do faktycznego kodu
chciałem wam powiedzieć jak w ogóle działa react native i na początku chcę
zaznaczyć że te lekcja jest totalnie nieobowiązkowa zahacza o pewne zaawansowane rzeczy i
też nie będę się jakoś za bardzo w niej zagłębiać w szczegóły natomiast myślę że warto
wiedzieć mniej więcej jak to działa a nawet jak was to nie interesuje albo nic nie zrozumiecie to możecie
sobie po całym proszę tu wrócić i przemyśleć zobaczyć i wyciągnać własne
wnioski więc powiem dosłownie w paru slajdach jak to wygląda więc
kilka faktów przede wszystkim jak wiecie albo się dowiecie
kod piszemy w javascript przy użyciu powiedzmy tej samej technologii co w react'cie czyli
tworzymy te same podobne komponenty zarządzamy stanem i tak dalej
i tak dalej i nasz kod jest bundlowany to znaczy że jest
cały ten kod który napiszemy w javascripcie jest wrzucany do jednego
pliku i tak samo się dzieje w przypadku reacta wtedy mam powstaje aplikacja
single page application która jest jednym plikiem oczywiście w przypadku reacta możemy jeszcze korzystać z server
side renderingu i paru innych rzeczy które nam to porozbija webpacka i tak dalej ale w wielkim uproszczeniu
taki w najprostszej wersji mamy po prostu jeden plik który jest bundlowany i do tego służy nam metro bundler
w przypadku react native'a czyli takie narzędzie które nam będzie bundlowało
to co będziemy pisać w naszym javascripcie i mając
tego bundle'a musimy jakoś komunikować się z tą stroną natywną żeby
faktycznie wykonywać ten kod żeby tworzyć te widoki natywne co będę też
pokazywać w dalszych częściach kursu i do tego służy tak zwany bridge
czyli to jest działa mniej więcej tak że nasz javascript mówi okej stwórz
mi widok wysyła tą informację właśnie przez ten bridge ten most
do iOS-a albo do androida w zależności gdzie ta aplikacja jest uruchamiana i
manager po stronie tej aplikacji po prostu ten widok rysuje
tak czyli jakby nasz kod jest po prostu innym językiem który jest później tłumaczony
na to co się dzieje na platformie natywnej i w przypadku takich
w przypadku takiej komunikacji udział biorą cztery elementy
powiesz że ten nasz JS Thread czyli to co uruchamiana nasz silnik JS-owy i
to jest jakby nasz bundle.js czyli to co jakby piszemy w tym JS-ie
a po drugie to jest UIManager czyli to co właśnie o czym mówiłem to jest ten
obiekt który działa po stronie natywnej po stronie iOS-a albo
po stronie androida i on ma dostęp do widoków natywnych
jest w stanie robić coś z tą informacją którą dostanie od tego naszego wątku JS-owego
on się komunikuję z Shadow Node/Tree czyli takim
wirtualnym DOM-em po stronie natywnej który sprawdza co się zmieniło w danym widoku w
danym miejscu i odpowiednio rysuje inny widok i
korzysta też z narzędzia Yoga czyli takiego mechanizmu który nam zamienia
ten layout który mamy flexowy z JS-a do
natywnej implementacji tak bo trochę inaczej się to robi w iOS-ie trochę inaczej się to robi
jak wam pokazywałem w androidzie i ta Yoga jest w stanie zamienić to
co napiszemy w tej naszej strukturze deklaratywnej na właśnie te widoki natywne
jeśli mielibyśmy to pokazać no to wygląda właśnie tak że mamy ten nas po lewej
stronie javascriptowy wątek z naszą logiką mamy jakiś most
pomiędzy mamy jakis most i po prawej stronie mamy właśnie ten wątek natywny
który się komunikuję przez tego bridge'a właśnie przez ten most i po prostu te komunikaty są cały
czas wysyłane jak utworzony jest jakiś widok ta informacja jest wysyłana strona natywna też może
w drugą stronę powiedzieć nam ej na przykład przyszło powiadomienie push tak więc jakby wysyła
tą informację do naszego wątku JS-owego ta komunikacja po
prostu jest poprzez jsony najprościej rzecz ujmując to jest tekst który jest wysyłany
i jak moglibyśmy sobie podejrzeć taką komunikację to wygląda w ten sposób czyli
nasz wątek JS-owy mówi ej panie UIManager stwórz mi
tu widok taki taki taki który posiada taki i takie style który robi to i to
później mówi słuchaj ten widok to jest dziecko tego widoku opakuj mi to
tak zrób to mi to w ten sposób ostyluj to tak nie wiem dodaj
tutaj margines i tak dalej cała ta informacja jest po prostu wysyłana czyli nasz
tak naprawdę react native jest takim narzędziem do tłumaczenia języka
reactowego na język natywny przez to korzystamy
z tych komponentów natywnych i działa to naprawdę bardzo fajnie i bardzo sprawnie
są z tym związane jakieś problemy to znaczy tak
jak tutaj widać ta komunikacja odbywa się poprzez każdorazowe wysyłanie informacji między
wątki natywnym a watkiem JS-owym i to wymaga tego żeby za każdy
wysłać kopie tych samych danych ponieważ tak jak tutaj widać ten
most to tak naprawdę nie jest do końca most tylko to nazwał bym to mostem linowym
czyli że ta komunikacja jest taka ciężka nie możemy przesyłać
na raz dużych kawałków informacji bo byśmy zapchali ten most więc te informacje są tak dzielone wysyłane
i czasem powoduje to pewne problemy wydajnościowe i takim projektem
który powstaje w react native jest Project Fabric
to jest podejście ja nie będę się tutaj za bardzo z tym zgłębiać dołączę
w linkach artykuł który wyjaśnia dużo
bardziej jeśli ktoś byłby zainteresowany natomiast w skrócie to jest projekt który zamienia nam ten bridge
na pewne inne narzędzie które usprawnia tą komunikację czyli już nie będzie trzeba wysyłać
tych informacji tylko będzie można się odwoływać do
tych informacji czyli nasz bridge nasza strona natywna będzie świadoma istnienia
javascriptowej bo w tej chwili po prostu nasłuchuje na te wiadomości ale
to jeszcze trochę ten projekt jest dopiero gdzieś tam w koncepcie natomiast coś takiego będzie
i to na pewno też mega zmieni całe srodowisko chciałbym zaznaczyć jedną
rzecz na koniec tego na koniec tej lekcji że to o czy mówiłem
w tej chwili jakby nie jest tak istotne dla was ale chciałem o tym powiedzieć
i zachęcam was do tego że po przejściu tego kurs na przykład sobie tu wrócić i porównać
wasze doświadczenia z tym o czym mówiłem zawsze warto fajnie wiedzieć
mniej więcej w ogóle jak to działa jak to jest w ja piszę tam view i to jest
powstaje nam jakiś widok natywny i dlatego chciałem zrobić ten wstęp teoretyczny który
może bo trochę nudny ale za chwilę przechodzimy już do konkretów dzięki