Frontend mobile frameworks comparison

In curand vreau sa fac o aplicatia mobila, de test, ca sa ma invat. Nu am nicio experienta pana acum in acest domeniu, m-am documentat doar despre Ionic, Cordova (PhoneGap), React Native. Va provoc pe voi, care aveti experienta in acest domeniu. Multumesc.

1 Like

https://github.com/facebook/react-native/tree/master/Examples

3 Likes

Si eu ma gandeam care optiune ar fi cea mai buna pentru mobile application si dupa ce m-am uitat pe net react native mi s-a parut cel mai interesant desi eu stiu angularjs pe care se bazeaza ionic dar in care nu creezi o aplicatie nativa, fiindca ruleaza intr-un webview, am cautat un ide pentru react native si am dat de Nuclide, nuclide e lansat de facebook bazat pe atom si cu suport pentru produsele lansate de facebook react respectiv hack.

3 Likes

Eu lucrez cu cordova si angularjs momentan, dar vreau sa incerc ionic, care e cam la fel dar mai bine optimizat.
Deci eu as recomanda Ionic daca vrei ceva optimizat, sau cordova cu angular daca vrei sa faci manual mai multe chestii.

2 Likes

Cu Iconic spui ca nu merg asa multe chestii “manuale” ? Poti da niste detalii te rog ?

Ma intereseaza si pe mine subiectul pentru o aplicatie pe ambele doua platforme majore.

1 Like

Nu am prea multa experienta dar din cate am vazut poti face chestii manual in ionic, doar ca probabil la inceput nu vei avea nevoie.

Daca folosesti cordova cu angularjs va trebui sa iti faci functii care verifica daca deviceul are conexiune la internet, pentru animatii va trebui sa alegi o librarie/modul, la asta ma refer prin chestii manuale.

Părerea mea este că trebuie să știm mai multe detalii ca să-ți răspundem la această întrebare.

Nu cred că există un framework mai bun decât altul, doar un framework mai potrivit pentru nevoile tale în această situație față de altul. De ce spun asta? Pentru că, în special în acest subiect, contează foarte mult ce vrei să faci cu aplicația respectivă.

  • Performanță?
  • Cross platform mobile?
  • Cât de rapid scrii aplicația?
  • Să respecți guidelinesurile platformelor pe care faci?

Personal, eu nu aș folosi niciodată un framework care nu implementează componentele UI native dintr-un sistem de operare pentru mobile si/sau rulează totul într-un Webview dar sunt foarte mulți care preferă un framework de genul pentru că îți faci treaba mult mai rapid.

Minusuri și plusuri au toate aceste frameworkuri, și repet, contează foarte mult ce vrei să faci, ce public ai, ce platforme și abia apoi poți lua o decizie în legătură cu framework.

Ca o comparație, întrebarea seamănă cu “Vreau să fac o aplicație desktop, ce limbaj de programare să folosesc?”, și aici, trebuie să stabilești mai întai pe ce platforme vrei să ruleze, native sau webview, și altele, abia apoi poți să răspunzi.

2 Likes

Personal, eu nu aș folosi niciodată un framework care nu implementează componentele UI native

De ce?

Gândindu-mă mai bine, afirmația nu a fost una chiar potrivită, deoarece exact cum am subliniat și în postul anterior, în diferite cazuri aș putea merge pe un astfel de framework, deci, nu pot să spun că “niciodată”.

Spre exemplu, un simplu caz în care nu cred ca ar conta dacă UI-ul este nativ sau nu, este o aplicație pentru angajații unei firme. (management, o aplicație de taxi internă, un POS pentru un restaurant, sau alte chestii de genu).

Așa că dă-mi voie să-mi rectific afirmația, personal, eu aș opta în majoritatea cazurilor (în general aplicații publice, accesibile publicului larg pe Play Store / App store) pentru un framework care implementează componentele UI native din diferite motive.

Primul motiv și cel mai important este obișnuința userului. Când userul îți deschide aplicația știe deja cum și ce are de făcut. Este familiarizat cu componentele, cu designul și cu funcționalitatea. Dacă un utilizator de Android de 2-4 ani deschide o aplicație care are UI-ul de iOS sau invers este un eșec total. Dacă încerci să ajungi undeva la mijloc între cele două tot nu este atât de grozav deoarece fiecare are ceva caracteristic.

Desigur, acele componente se pot implementa să arate / să se comporte la fel, DAR tot nu este suficient, exista 3-4 versiuni de Android care sunt folosite mai mult, este greu să le implementezi pe toate ca atunci când utilizatorul întră în aplicație să fie ceva ce știe deja și cu ce este obișnuit.

Majoritatea implementărilor sunt destul de slabe și clar scad din calitatea aplicație (unele vizual, altele performanța lasă de dorit).

Apoi mai vine problema updateurilor, dacă e implementat nativ, nici nu trebuie să mai faci update la aplicație, se schimbă de la sine.

Nu cred că are rost să înșir aici toate chestiile pentru că mă gândesc că știm cu toții ce înseamnă o componentă nativă sau nu.

Orice aplicație care respectă cât mai mult OS-ul pe care funcționează și se integrează cât mai bine cu el are un mare plus din partea mea.

Un exemplu concret ar fi material design pe Android. Cred că pot să spun că orice implementare care există în acest moment ori are probleme vizuale ori de performanță fața de cea nativă.

Nu știu dacă există vreun framework la momentul actual care să îndeplinească aceste cerințe dar eu spre asta aș merge.

TL;DR Nativ pentru că userul este obișnuit, performanțele sunt mai bune, nu trebuie să-ți bați capul cu updateurile, și denotă mai mult profesionalism când vezi o aplicație bine făcută pentru acel OS. Cred că userul asta așteaptă să vadă.

Multe povești, puține chestii concrete pot să spun pentru că nu am lucrat cu ele, nu știu exact care e mai bun pentru x și care pentru y, ți-am spus părerea mea despre cum ar trebui să abordezi problema, să vezi ce aplicație sau aplicații ai de făcut, și abia apoi să alegi frameworkul.

3 Likes

Salut,

Vreau si eu sa incerc sa fac o aplicatie. Dupa ce m-am documentat am ajuns in punctul de a alege intre Ionic 2, React Native si NativeScript. Mentionez ca nu stiu nici React nici Angular 2, deci orice aleg tot de la 0 pornesc. As vrea sa stiu ce-mi recomandati pentru long term, nu doar project based.
Inafara de Google, stiti alte resurse pentru documentare pentru ce ati/veti recomanda?

Mersi anticipat,

Eu am lucrat vreo 2 ani cu Angular apoi am trecut pe React, in opinia mea iti recomand React Native (curs de training).

Paradigma pe care o ofera React este mult mai intuitiva decat Angular (Ionic) / NativeScript.

Dupa ce incepi sa stapanesti React Native poti porta aplicatia pt. web destul de usor, folosind React Native for Web, recent mobile.twitter.com a fost implementat asa.

Facebook, Uber, Airbnb, Twitter, Netflix sunt doar cateva companii care folosesc React (Native) in productie, comparativ cu rata de adoptie pe Angular.

3 Likes

Mersi de opinie.
Ce tool-uri folosesti pentru dezvoltare? Mentiona un coleg mai sus de Nuclide IDE pentru React Native.

PS 1: din cate am inteles trebuie sa targetezi fiecare OS in parte - indexIOS.js si indexAndroid.js. Corect? Cum te-ai acomodat? Intrii in detalii legate de Objective C si Android SDK?

PS 2: adaug si Deco Software

La cum vad lucrurile, parca se merita mai mult trecerea catre Java/Android, decat sa fii blocat intr-un framework.

React nu este un framework, este o librarie pt. partea de view dintr-o aplicatie. Ca React mai sunt inca cateva zeci de librarii similare (deku, mithril, etc). Distributia este pe Web, iOS, Android (3+ platforme).

Pt. dezvoltarea unui app, pe langa view mai ai:

  • application state management
  • session management
  • communication (HTTP, WebSockets)
  • business logic, etc
    pe care le vei scrie in JS, nu intr-un framework anume, daca nu vrei.

Daca lucrezi exclusiv cu Android, Java poate fi o solutie destul de buna.

1 Like

… în caz că Google nu se răzgândeşte în urma procesului cu Oracle:

Nu mă refer strict la Swift (n-am regăsit link-ul bun, iar titlul la acesta e puţin incomplet).
Tot în articol spune şi de Kotlin ca o alternativă mai viabilă.

Categoric nu va avea loc de pe azi pe mâine şi Java va mai rămâne mult valabil, dar cred că trend-ul general merge înspre mai puţină popularitate pentru Java (în general, nu doar legat de Android).

Asta n-are relevanta, Google a vrut sa adopte Go, acum Swift si mereu se loveste de un compromis, segmentarea Android.

In cel mai bun caz o sa apara ceva alternativ, nu o sa fie Swift in Android. Problemele sunt similare cu de ce nu a fost incorporat Dart in Chrome.

Daca ai ceva experienta cu C# poti incerca si http://open.xamarin.com/

Java, Swift, Objective-C, C, cu api-urile native sau dacă vrei să fie crosss platform Xamarin sau QT. În niciun caz nu aş folosi frameworkuri JS pentru aplicaţii mobile. E la fel de naşpa cu a realiza site-uri web în C++.

For teh games Unity sau altceva, de exemplu Atomic Game Engine.

The right tool for the right job, right?

Dacă aş vrea un look particular care să fie acelaşi pe toate platformele aş merge pe QT, dacă aş vrea controale native aş merge pe Xamarin.