Olen useiden vuosien ajan ollut sitä mieltä, että Angular ja React vastaavat erilaisten web-sovellusten tarpeisiin ja molempia kannattaa käyttää rinnakkain projektista riippuen. Nyt olen kääntämässä kelkkani kokonaan Reactin hyväksi, koska sen ympärille on kasvanut laaja ekosysteemi erilaisia kirjastoja ja julkaisutyökaluja. On yhä vaikeampi perustella mitä hyötyä Angularista on projektille. Sillä tehdyt sovellukset ovat raskaita ajaa, ja teknisesti epäystävällisiä SEO-optimoinnin ja some-jakamisen kannalta.

Reactia vaivasi pitkään "legopalikkaongelma". Tarjolla oli hienoja yksittäisiä palikoita muttei hyvää valmista pohjaa sovelluksille. Nykyään React-sovellusten pohjaksi löytyy varsin mielenkiintoisia valmiita alustoja, kuten esimerkiksi Gatsby (https://github.com/gatsbyjs/gatsby).

Gatsby pyöräyttää automaattisesti kasaan React-sovelluksen, johon voi helposti liittää staattista sisältöä Markdown-, JSON- tai YAML-muodossa. Tämä tekee kokonaisen sivuston luomisesta helppoa: täytyy vain generoida joukko Markdown-tiedostoja. Kun ne julkaistaan web-palvelimelle, kaikki menee oikein SEO-optimoinnin ja some-jakamisen kannalta.

Gatsby-sovelluksissa voi käyttää myös Redux-tietomallia, joka puolestaan tarjoaa paremman tavan toteuttaa dynaamisia toimintoja. Redux integroituu helposti mihin tahansa tietolähteeseen, joka osaa palauttaa dataa Promise-rajapinnan kautta. Reduxin avulla koko sovelluksen tietomalli pysyy hallinnassa ja selkeänä siten, että data ladataan pilvestä sovellukseen vain kertaalleen ja samaa dataa voidaan esittää monessa eri näkymässä eri tavoin suodatettuna.

Reactin puolesta puhuvat myös natiivien mobiilisovellusten kehitystarpeet. Angular-maailmassa on käytetty pitkään Ionic Frameworkia, joka osaa paketoida Angular-web-sovellukset natiiveiksi iOS- ja Android-sovelluksiksi. Hintana on se, että sovellukset pyörivät teknisesti web-selainikkunassa. Eroa ei näe silmillä, mutta sen saattaa tuntea siitä, että ikkuna ei aina reagoi painalluksiin täysin reaaliajassa.

React Native ei puolestaan tarvitse selainikkunaa sovellusten paketointiin vaan kääntää ne suoraan natiivikoodiksi. Sovellukset toimivat juuri sen verran nopeammin, että ero on mahdollista huomata.

Ionic Frameworkin etuna oli pitkään se, että Angularin laaja apukirjastojen ekosysteemi oli sen avulla hyödynnettävissä natiivisovelluksissa. Nykyään Reactillakin on vastaavanlainen ekosysteemi, ja monissa kirjastoissa erikseen mainitaan niiden toimivan myös React Native -ympäristössä.

Näyttää siis kaiken kaikkiaan siltä, että Reactista ja sen ympärille rakentuneesta ekosysteemistä on tullut erittäin kypsä ja käyttökelpoinen alusta sekä web-sovellusten että natiivien mobiilisovellusten kehittämiseen. Reactilla on lukuisia vahvuuksia, kuten sovellusten keveys, SEO- ja some-yhteensopivuus sekä oikeat natiivisovellukset.

Itse näen Reactin tämän kisan voittajana, kun taas Angular ja muut vastaavat sovelluskehykset jäävät hiljalleen sen varjoon.

Published 15.5.2016