Edellisessä kirjoituksessa tutustuimme Reactiin, johon React Native liittyy. Siinä missä React on erinomainen väline nettisivujen tekemiseen, React Nativella saa kätevästi aikaan mobiilisovelluksia. React Nativen pystyy lisäämään jo olemassa olevaan projektiin tai sillä voi tehdä kokonaan uuden. Jälkimmäinen on useammin parempi ratkaisu, jos halutaan saada React Nativen kaikki hyödyt irti.
Mikä “Native”?
Nettisivuja tehdessä ei tarvitse tehdä omaa versiota Applen laitteille, Linuxille tai Windows koneille, kun selain kääntää koodin haluttuun muotoon. Puhelimissa ja tableteissa toimivien sovellusten pitää kuitenkin jutella suoraan puhelimen kanssa ja toimia niin kutsutuilla natiivikielillä. Androidilla on oma natiivikielensä (Kotlin & Java) ja iOS-laitteilla omansa (Kotlin & Objective-C). Tästä johtuen Googlella ja Applella on omat sovelluskauppansa heidän laitteissaan toimiville ohjelmille.
React Nativen kätevyys perustuu komponentteihin, jotka osaavat tulkata eli puolestamme toteuttaa asiat molemmilla natiivikielillä. React Nativella kehittäessä ei tarvitse opetella uusia ohjelmointikieliä, vaan pitkälle pärjää samalla JavaScript-osaamisella, jota pelkän Reactin kanssa käytetään.
Mitä ovat komponentit?
Yleensä ottaen komponentit ovat koodiosioita, jotka määritellään kerran ja sen jälkeen tätä samaa osiota käytetään useassa eri kohdassa. Voimme vaikkapa määritellä, miltä napin tulee näyttää, mitkä ovat sen fonttikoot, värit ja varjostukset. Ja sitten kutsumme tätä kokonaisuutta vain sanomalla “yksi nappi tähän, kiitos” kaikkien nappien kohdalla.
React Nativen komponentit ovat sovelluksen rakennuspalikoita, jotka osaavat kertoa mobiililaitteille miten niiden tulisi toimia, miten haluamme sen ottavan puhelimen näytöltä tilaa ja kuinka reagoida käyttäjän kosketukseen. iOS- ja Android laitteilla on joitakin eroja sen suhteen, mitä niillä on mahdollista tehdä ja miten tietyt prosessit suoritetaan, mutta näitäkin erikoistilanteita varten löytyy omia komponentteja React Nativelta.
Muistatko edellisessä tekstissä käsitellyt JavaScript-kirjastot? On olemassa myös komponenttikirjastoja, joiden avulla React Native projektiin voidaan lisätä käytännöllisiä lisäominaisuuksia, joita React Native ei suoraan tarjoa. Esimerkiksi jos haluat liittää sovellukseesi kalenterinäkymän päivämäärineen, voit napata mieleisen kalenterikirjaston npm-kirjastosta sen sijaan, että joutuisit kirjoittamaan koko kalenterilogiikan ja käyttöliittymän itse. Näiden kirjastojen löytämisessä voidaan käyttää npm-kirjastohakukonetta.
Kannattaisiko kuitenkin tehdä alusta alkaen itse?
Suurimmat hyödyt alusta alkaen natiivina eli vain Androidille tai iOS-laitteelle kehitetyssä sovelluksessa on suorituskyky ja joidenkin laitteen ominaisuuksien, kuten GPS:n ja Bluetoothin helpompi hyödyntäminen. Myös näyttäviä animaatioita sisältävien sovellusten tai vaikkapa pelien tekemiseen natiivisovellus on parempi vaihtoehto.
Natiivisovellusten kehittäminen tulee kuitenkin paljon kalliimmaksi, kun työ pitää tehdä kahteen kertaan. Tai sitten täytyy valita vain yksi käyttöjärjestelmä ja rajata ainakin kolmasosa suomalaisista käyttäjistä ulkopuolelle.
Miksi juuri React Native?
React Nativelle on olemassa vaihtoehtoja, mutta sen käytössä on samat hyvät puolet kuin Reactin käyttämisessä. Se on suosittu ja tätä kautta erittäin tuettu. Sitä myös kehitetään koko ajan. Emme ole naimisissa tämän teknologian kanssa, mutta tähän mennessä sillä on mielestämme parhaat jutut.