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 zanim przejdziemy sobie do omówienia
react native'u i opowiemy sobie o podstawach komponentach nawigacji
i tak dalej chciałbym żebyśmy przyszli trochę przez historię obaj żebyśmy zrozumieli pewne rzeczy skąd
się biorą jak działają generalnie historia mobile
można powiedzieć że zaczęła się od pierwszego iphone'a w 2007 roku kiedy to apple na
czele stevem jobsem wypuścili go a taką rzeczą która tak naprawdę zrobiła
powiedzmy robotę był marketplace appstore to znaczy
to że w końcu producent telefonu
który oczywiście zrobił to dobrze tak jakby abstrahując od tych rzeczy które prostu były w iphonie
zrobione dobrze ładnie i tak dalej to połączył deweloperów którzy mogli
mieli możliwości umiejętności tworzyć przeróżne aplikacje dał
im możliwość wykazania się dając im dostęp do narzędzi
do hardware które taki telefon posiadał tak jakby appstore powstało parę
miesięcy po wypuszczeniu pierwszego iphone'a ale to on tak naprawdę spowodował tą dekadę
mobile i to że wszystko się zmieniło bo przed pierwszym iphonem przed
appstorem robienie aplikacji na symbiana no nie
należało do najprzyjemniejszych rzeczy tak to był taki game changer który zmienił czyli
tak naprawdę appstore oczywiście poza samym iphonem
na rynku mobile powstał też android google
kupił firmę android w 2005 roku czyli już parę lat przed iphonem
ale zajęło to trochę czasu zanim ten standard powstał natomiast google
do teraz google i właściwie iOS i android działają
trochę z inną filozofią czyli własciwie apple i google dlaczego dlatego że apple
posiada swój zespół który robi hardware i swój zespół który
robi software to znaczy te dwa zespoły są w stanie się dogadać są w stanie zmienić swoje specyfikacje
po to żeby spełnić jakieś cele które ma firma jako taka i łatwiej komunikować
się wewnątrz organizacji niż tak jak w przypadku google android
jest pewnym standardem tylko zauważmy że każdy producent telefonów który musi przejść
jakieś testy znaczy model telefonu musi przejść testy żeby zostało to zatwierdzone
jako oficjalny telefon z androidem natomiast każdy producent samsung huawei
z huawei to teraz trochę inna bajka nakłada swoją nakładkę dodaje
swoją nakładkę która zmienia pewne rzeczy i tak dalej i to powoduje że
w pewnych sytuacjach stwarza to problemy tak google nie raz zwłaszcza w
sytuacjach w których walczył o wydajność i tutaj przykładem może
być arkit vs arcore czyli technologie które umożliwiają
działanie w rozszerzonej rzeczywistości arkit działa dużo lepiej od arcore na
większości telefonów arcore działa bardzo dobrze ale na bardzo konkretnych urządzeniach
dlatego że apple jest w stanie dostosować ten software bardzo
dokładnie do tego hardware zna jego szczegóły apple wypuszczając androida
no nie jest w stanie przewidzieć co zrobią wszyscy producenci tak więc to jest zupełnie inna filozofia
z drugiej jednak strony apple zawsze celował w pewien z
racji tego że robili ten software tylko pod swoje telefony no to celowali w
swoich klientów swoich klientów iphone'ów android celował w dużo szerszą gamę i
zdecydowanie nawet do teraz android ma większość rynku natomiast prawda
jest taka że mimo tego że android ma większość rynku to jednak te telefony ci
użytkownicy z androidem przynoszą większe dochody statystycznie bo
nie zawsze tak jest to zależy oczywiście trochę od grupy sercem takiego appstore'a
i google play był oczywiście sdk czyli software development kit czy pakiet
narzędzi który umożliwiał tworzenie aplikacji na androida i iOS-a w przypadku
iOS-a od początku do teraz mamy i mieliśmy narzędzie które się nazywa
xcode w tej chwili już jest chyba w wersji 9 albo 10 i
programowało się w języku objective-c zresztą do teraz można programować w tym języku i do
teraz pewne biblioteki w tym w
tym języku są stworzone natomiast problem w tym języku był taki
że to było niepodobne do niczego innego to znaczy objective-c jest
językiem który no nie przypomina nic innego wygląda
dziwnie jest to tak naprawdę język c z nakładką obiektową i no
nie jest to coś co przypomina jakikolwiek inny język już ktoś się nauczy tego objective-c to bardzo
często przy nim zostawał stąd też właśnie deweloperzy iOS bardzo często na początku zwłaszcza
byli taką grupą zamkniętą no bo programowali w czymś w czym nikt inny nie programował albo
przynajmniej nie było nic popularnego w czym można by ten objective-c zastosować plusem tego
objective-c było to że można było wykonywać kod c i w c++ tutaj bez problemu
więc to było fajne w przypadku androida programowaliśmy w javie do
teraz można też programować w javie a takim ide które było na początku
to był eclipse z wtyczką adt czyli android development tools
od 2013 roku mamy już do dyspozycji android studio to jest pełnoprawne
studio deweloperskie w którym mamy wszystkie narzędzia które chcemy pluginy i
tak dalej i tak dalej i nie ma tych różnic oczywiście w przypadku
obu narzędzi języków i tak dalej to oczywiście wspólne było to że
to sdk dawało dostęp do hardware'u do aparatu gps-u pamięci
bluetootha nfc czujników co spowodowało wysyp aplikacji i po prostu ogrom
możliwości co się w tej chwili dla nas płatność zbliżeniowa telefonem albo zrobienie
zdjęcia aparatem wysłanie jej czy mapy z geolokalizacją co w ogóle
coś oczywistego a tak naprawdę powstało to dopiero wtedy dzięki temu
że deweloperzy mieli taką możliwość czyli w przypadku andoida jeszcze raz od
2013 roku mamy dostępny android studio możemy pisać w takich językach java
i kotlin kotlin to jest język który się
kompiluje do bytecode do java jest oczywiście mi osobiście dużo bardziej
się podoba jest nowoczesnym językiem funkcyjnym ale również też obiektowym
wygląda naprawdę ładnie fajnie i oczywiście ma też parę
swoich zaawansowanych opcji natomiast jest okej i teraz w tej chwili już jest takim standardem
co się raczej się w javie nie programuje są bardziej biblioteki które jeszcze
gdzieś tam w javie powstawały i też mają możliwość pisania kodów c++ w tak
zwanym ndk czyli native development kit natomiast komunikacja między tą javą
a c++ która jest realizowana przez tak zwane jni
no jest trochę skomplikowana o tym nie będę raczej tutaj mówić takim
elementem podstawowym w androidzie była aktywność
to znaczy jak mieliśmy 3 ekrany ekran logowania ekran główny
z jakąś listą to to były po prostu 3 aktywności w tej chwili raczej jest
tak że google zachęca do tego żeby była jedna aktywność i wiele fragmentów
to wynika z tego że aktywności nie dało się między sobą zagnieżdżać
nie można było mieć aktywności i wymagać aktywności jak zdaje się że w 2010 czy 11 pojawił
się android 3 wersja 3 z tabletem no to nagle trzeba jakoś upchnąć
coś zagnieździć i wtedy powstały właśnie fragmenty czyli takie można powiedzieć trochę małe
aktywności tak czyli jakby również posiadją podobne lifecycle podobnie
się nimi zarządza natomiast pozwalają na zagnieżdżenie się jeśli chodzi o tworzenie widoków to
w androidzie tworzymy je przy pomocy xml-a takiego języka
tagów no powiedzmy że przypominającego html ale no daleko mu
było do tej elastyczności i wygody z html
i dlatego wielu deweloperów jak już tylko to było możliwe zaczęło
korzystać z różnych narzędzi to anko które pozwalały na tworzenie
deklaratywnie widoków w tej chwili w pakiecie
jetpack takim pakiecie z różnymi narzędziami do programowania w androidzie jest
już wersja chyba dalej jeszcze w wersji beta compose czyli takiego właśnie narzędzia do tworzenia deklaratywnego
ui i to jest bardzo fajne i z tego coraz więcej
ludzi korzysta i będzie korzystać bo xml naprawdę nie był najlepszym narzędziem ale na tamte czasy
i tak było okej mamy jeszcze takie narzędzie gradle które
służy do budowania projektu zarządzania paczkami i tak dalej ja trochę powiem
więcej o gradle'u w ostatniej lekcji gdzie będziemy mówić o deploymencie w przypadku iOS-a
tak jak już mówiłem mamy do czynienia z xcodem piszemy w objective-c albo w swift
swift to jest nowy język znaczy nowy to już od paru ładnych lat na iOS-ie
trochę jest jak javą i jej kotlinem w przypadku androida jest to język zarówno
funkcyjny jak i obiektowy można bardzo fajnie w nim pisać również
można pisać w c++ nie potrzeba już tego bridge'a o którym mówiłem przypadku androida a
natomiast taką podstawową jednostką takim komponentem w
iOS-ie jest UIViewController przy czym od początku ten UIViewController zakładał
że można je między sobą zagnieżdżać i on jast taką aktywnością bardziej fragmentem z androida
i bardzo często mówimy o UIViewController kiedy mówimy o jednym ekranie ale
możemy je zagnieżdżać więc jeśli ekran jest zaawansowany to możemy porobić UIViewControllerów ile chcemy
w tym ekranie żeby wygodniej nam się tym zarządzało jeśli chodzi
o tworzenie widoków no to w xcode coś co było bardzo fajne
to jest interface builder to jest coś takiego że tak naprawdę
widok tworzymy tak jakbyśmy robili go w sketchup czyli po prostu sobie przesuwamy elementy dodajemy
sobie no nie wiem jakiś tam segment czy
jakiś button czy cokolwiek i po prostu to ustawiamy i w pierwszej wersji to było genialne dlatego
że był jeden iphone z jedną rozdzielczością więc wystarczyło że się te elementy położyło i to
działało i było super natomiast problem sie zaczął pojawiać jak iphone'y zaczęły rosnąć i wszerz
i wzdłuż no i nagle trzeba było dorzucać jakieś narzędzia do tego żeby
to obsługiwać i wtedy zaczęły się problemy i ta obsługa tych layoutów no
nie jest jakaś najlepsza natomiast też apple wyszedł temu naprzeciw i od niedawna jest dostępny swift ui
czyli właśnie taki deklaratywny język do tworzenia widoków ostatnią rzeczą o której
warto wspomnieć w przypadku budowania aplikacji na iOS jest CocoaPods
czyli takie narzędzie do zarządzania paczkami
i też o tym troszeczkę później powiem a jest to po prostu taki npm w którym możemy
zarządzać naszymi paczkami jesli mielibyśmy porównać w tej chwili
generalnie mobile do web developmentu no to można powiedzieć że
w mobile zawsze dzieliliśmy na początku zwłaszcza widoki na ekrany
tak myśmy jeden ekran ekran drugi ekran trzeci w przypadku aplikacji webowych ze względu
na to że zazwyczaj były uruchamiane zwłaszcza na początku na komputerach szerokich mieliśmy różne panele
z boku i tak dalej które oczywiście też jako rwd mogły się skalować olbrzymią różnicą
ktora jest do teraz jest to że aplikacja oczywiście pobieramy na początku
całą a w przypadku strony pobieramy po prostu kod ten
kod oczywiście może być w tej chwili cachowany i tak dalej i na początku to było olbrzymim
olbrzymim ułatwieniem że mogliśmy pobrać kod aplikacji bo po prostu internet
był kiepski pobierało się to długo renderowało się to długo jak aplikację mieliśmy pobraną
i mogliśmy uruchomić od razu to działało super i mogliśmy
naprawdę z tego fajnie korzystać w tej chwili to się trochę zmienia ale
dalej posiadanie aplikacji zainstalowanej ma swoje plusy fajnym
czymś pomiędzy mobile a web jest właśnie pwa czyli aplikacja
progresywna czyli to jest aplikacja napisana strona z pewnymi meta informacjami
które umożliwiają uruchomienie jako aplikacji i dostęp do pewnych pewnych
hardware'owych elementów ale nie wszystkich zwłaszcza nie
jest to wspierane w tej chwili za bardzo na na iOS-ie ale to wynika z tego że po prostu apple'owi
zależy na tym żeby korzystać z appstore'a i tak
dalej i oczywiście web z zasady nie ma dostępu do hardware chociaż to tez się
zmienia bo te przeglądarki w tej chwili sandboxowe dają coraz więcej
możliwości wiec jeśli mielibyśmy tak na szybko porównać iOS-a i androida no
to mamy xml do tworzenia widoków versus ten interface builder mamy nasze ViewControllery
versus fragmenty a mimo tego że podobne są te lifecycle i życie
w tych komponentów inaczej trochę zarządza się backgroundem czyli jeśli
chcielibyśmy żeby coś działało w tle to trochę inaczej wygląda to na androidzie trochę inaczej wygląda to na iOS-ie
na iOS-ie jest trochę bardziej zamknięte no i oczywiście na androidzie to się zmienia co wersję jakby to ze względu
na oszczędność baterii prywatność i tak dalej i tak dalej troszkę inaczej wygląda
zarządzanie systemowym api właśnie nie wiem do kamery i takich innych rzeczy i
inaczej zarządzam wielowątkowością w przypadku iOS-a
mamy tam dispatch queue w przypadku androida od niedawna mam coroutines takie fajne narzędzie natomiast jak na to
spojrzymy szerzej to się okazuje że tych podobieństw jest znacznie więcej niż różnic jak
popatrzymy na kod swifta w tej chwili czy kod kotlina jak popatrzymy sobie na nawigację aplikacji
jak popatrzymy sobie na wersję aplikacji czyli właśnie takie targets flavours które możemy tworzyć czy na przede wszystkim
na logikę biznesową to zauważamy że to jest to samo tylko niewiele
się różni i to spowodowało że jakby naturalnym
było powstanie narzędzi które umożliwiają tworzenie jednego kodu który będzie
generowany nie wiem czy to właśnie będzie generowany kod czy będą generowane komponenty w jakiś
sposób sprawienie żeby ten wspólny
kod nie pisać go dwa razy no i oczywiście jest mnóstwo narzędzi o każdym z
nich można by sporo mówić natomiast można je podzielić na powiedzmy dwie trzy grupy pierwsza
grupa to są aplikacje hybrydowe i one tak naprawdę jak ionic czy
cordova to tak naprawdę opakowuje naszą stronę w przeglądarkę i
pakuje to w aplikację czyli tak naprawdę mam stronę internetową wewnątrz przeglądarki
zresztą zrobimy sobie taką aplikację w trakcie naszego kursu a
druga grupa to są narzędzia które generują na kod natywny i wśród
tej grupy jest oczywiście react native oczywiście mamy też xamarin
który działa podobnie do react native'a ale wykorzystujemy do niego
środowisko dot net c sharpa i tak dalej mam flutter który działa na silniku graficznym
czyli on nie generuje tych widoków ma to też swoje plusy ma to swoje minusy no
i też mamy wersja hardcore czyli pisanie z kodu współdzielnego w c++
co miało miejsce w przypadku projektu light speed o którym możecie poczytać w przypadku
tworzenia nowego messengera tak więc jakbym miał podsumować te wszystkie platformy to
dla mnie react native jest najlepszy z tego względu że już jest technologią dojrzałą
bo już ma przynajmniej ponad 5 lat a po drugie bazuje na react'cie i
osoba która programuje w react native albo w react'cie jest w stanie łatwo
się jakby przebranżowić wejść do projektu mobilnego i odwrotnie i to jest olbrzymi plus
z punkty widzenia zarządzania zespołu i z punktu widzenia też rozwoju bo łatwo możesz
zostać mobile developerem i w stosunkowo niewielu krokach
przejść na werse webową dlatego react native mi
się tak podoba dlatego u nas w firmie zdecydowaliśmy się na przejście react native
i dlatego chciałbym zachęcić ciebie żebyś też w tej technologii programował