Nu există lipsă de instrumente atunci când vine vorba de dezvoltarea de aplicații care funcționează pe mai multe platforme. A început inițial cu PhoneGap, care a devenit apoi Cordova. Apoi au venit cadrele hibride cu performanță aproape nativă, cum ar fi React Native și NativeScript. Și mai recent a venit Google Flutter.
Punctul meu este că există o mulțime de cadre acolo. Veți crede-mă dacă faceți doar o căutare rapidă de către Google a "cadrelor de dezvoltare mobile pe mai multe platforme". Dacă începeți să dezvoltați aplicații mobile, aceasta poate fi paralizantă. De aceea este important să vă cunoașteți opțiunile.
Așa că astăzi vă voi prezenta pe Fuse, o altă platformă pentru dezvoltarea de aplicații mobile care funcționează pe mai multe platforme.
În acest articol, voi încerca să răspund la următoarele întrebări:
Fuse este o platformă pentru dezvoltarea aplicațiilor cross-platform cu marcaj UX și JavaScript. Este în aceeași categorie ca și Reactive Native și NativeScript, dar principalul său punct de vânzare este furnizarea de instrumente care permit dezvoltatorilor și designerilor să colaboreze în timp real.
Fuse utilizează UX Markup, un limbaj bazat pe XML, care oferă componentele UI. De asemenea, vă permite să specificați modul în care diferitele componente s-ar comporta atunci când utilizatorii interacționează cu ei, astfel numele "UX".
Un alt lucru important de înțeles când începeți cu Fuse este că nu este o platformă bazată pe browser, cum ar fi Cordova. Deci, chiar dacă vă permite să utilizați cod JavaScript, nu toate funcțiile JavaScript care sunt disponibile într-un mediu de browser funcționează.
Siguranța oferă o colecție decentă de polifluze, care vă permit să faceți lucruri cum ar fi efectuarea solicitărilor AJAX sau setarea unui interval pentru executarea unei bucăți de cod. În afară de aceasta, sunteți limitat la caracteristicile JavaScript de bază.
Sub capotă, siguranța traduce marcajul UX în cod C ++ nativ prin intermediul compilatorului Uno. Uno este limbajul similar lui C #, folosit pentru a scrie toate clasele de bază ale Fuse. Deci, marcajul UX pe care l-ați scris, împreună cu cadrul Fuse, este compilat în C ++. Apoi, instrumentele de platformă nativă (Android Studio sau Xcode) iau acel cod C ++ și compilau aplicația nativă.
În ceea ce privește codul JavaScript, acesta este interpretat de un JavaScript VM în timpul rulării. Aceasta înseamnă că interfața utilizator și logica de afaceri sunt independente una de cealaltă.
Nici un articol introductiv despre o platformă nouă nu ar fi complet fără a fi comparat cu o platformă existentă. O platformă comparabilă cu Fuse este React Native. Deci, vom compara aceste două platforme pe baza următoarelor criterii:
Rețineți că voi compara doar funcțiile gratuite ale Fuse deoarece React Native este o platformă gratuită.
Atât Fuse, cât și React Native vin cu următoarele caracteristici:
Iată caracteristicile care sunt disponibile numai pentru Fuse:
Singurul dezavantaj al aplicației de previzualizare, spre deosebire de previzualizarea personalizată (modul implicit de previzualizare a aplicațiilor pe un dispozitiv), este că codul Uno personalizat și pachetele terță parte nu vor funcționa. Comenzile de localizare, notificări push și notificări locale nu vor funcționa. Este mai bine să utilizați previzualizarea personalizată în acele cazuri.
Performanța fusei este comparabilă cu cea locală, deoarece marcajul UX este compilat la interfața utilitară nativă pentru platforma respectivă. Și deoarece toate animațiile, efectele și tranzițiile sunt definite în marcajul propriu-zis, el știe deja ce să facă atunci când, de exemplu, este apăsat un buton. Așa cum am menționat mai devreme, JavaScript rulează pe un fir separat și nu va afecta deloc performanța UI. În plus, Fuse utilizează OpenGL ES, care oferă performanțe grafice accelerate hardware. Aceasta înseamnă că diferite animații și efecte pot fi utilizate în același timp fără a avea un efect considerabil asupra performanței UI. Aceasta face Fuse o platformă foarte potrivită pentru dezvoltarea de jocuri mobile.
Pe de altă parte, React Native utilizează un modul bridge pentru fiecare platformă. Acest modul funcționează ca o conexiune între API-urile JavaScript (inclusiv componentele UI) și funcționalitatea nativă, astfel încât să poată comunica între ele. Acest lucru face React Native mai puțin performantă decât Fuse din cauza costului de comunicare dintre componentele native și componentele UI corespunzătoare Reactive Native.
Atât Fuse, cât și React Native oferă un limbaj de markup ca un bloc de construcție pentru interfața utilizator. Cu toate acestea, doar prin compararea documentelor Fuse și React Native, puteți vedea că React Native are mai multe componente care reprezintă omologii lor nativi.
Fuse UX Markup vă permite să descrieți animațiile unei componente ori de câte ori un utilizator interacționează cu acesta. De exemplu, iată cum puteți crea un buton care devine de trei ori mai mare decât dimensiunea originală în timp ce este apăsat. Siguranța are grijă de cât timp va fi tranziția dacă nu o specificați:
Pe de altă parte, React Native se bazează pe JavaScript pentru aproape orice. În codul de mai jos, TextInput
componentă se bazează pe text
să fie inițializată în stat. Se actualizează apoi de fiecare dată când textul introdus de utilizator se modifică:
this.setState (text) valoare = this.state.text />
Iată cum este furnizat textul implicit pentru un câmp de text:
constructor (recuzită) super (recuzită); this.state = text: 'Text implicit';
Între cei doi, modul în care Fuse separă logica de afaceri de administrarea UI este favorabil în ceea ce privește colaborarea dintre un dezvoltator și un designer. Marcarea UX este suficient de simplă pentru înțelegerea designerului, astfel încât să poată lucra în timp ce dezvoltatorul se ocupă de logica de afaceri.
Siguranța vă permite să utilizați aceeași limbă pe care o folosesc pentru toate clasele de bază ca o modalitate de a extinde funcționalitatea nativă. Cu toate acestea, acest lucru necesită cunoașterea modului de utilizare a API-urilor native în Android și iOS. De la Fuse's Uno, puteți utiliza cod străin pentru a implementa funcționalitatea nativă. În prezent, Uno acceptă numai Obiectiv-C pentru iOS și Java pentru Android. Clasa rezultată este expusă astfel încât să puteți suna de la JavaScript.
În mod similar, React Native are un modul corespunzător pentru pod iOS și Android. Acest modul de punte servește drept punte între funcționalitatea nativă și JavaScript. La fel ca Fuse, acest lucru necesită să aveți o cunoaștere activă a obiectivului C sau Java.
Ambele platforme vă permit, de asemenea, extinderea componentelor UI native pentru fiecare platformă țintă. Deci, dacă, de exemplu, doriți să implementați o componentă UI corespunzătoare pentru controlul nativ de tip tooltip pe Android? Puteți face asta atât pe Fuse, cât și pe Nativ React.
Dacă îmi ceri opinia, aș spune că depinde de cazul tău specific de utilizare. Siguranța este pregătită pentru producție. Principalul său avantaj îl reprezintă performanța și cât de repede puteți trece de la o idee la un prototip de lucru. Aplicațiile create cu Fuse sunt foarte performante, iar colaborarea dintre dezvoltatori și designeri este foarte ușoară.
Principalul său dezavantaj este comunitatea sa. Siguranța este în mod clar angajată să deschidă sursa cu lansarea bibliotecilor care fac ca siguranța să funcționeze sub capotă. Cu toate acestea, ei sunt încă o companie mică (în comparație cu Facebook, cel puțin). Aceasta înseamnă că trebuie să facă bani într-un fel sau altul. De aceea, aceștia au planuri profesionale plătite, care sunt mai bine orientate către echipe și întreprindere. Deci, se poate presupune că majoritatea eforturilor lor vor fi depuse pentru dezvoltarea acestor instrumente plătite. Acest lucru lasă efortul sursei deschise unui cetățean de clasa a doua.
Dacă lucrați pentru o companie care dezvoltă aplicații zilnic, atunci Fuse este o opțiune bună. Dar dacă sunteți un dezvoltator independent ca mine, suntem mai mult blocați cu utilizarea planului gratuit. Este suficient de bun pentru cele mai multe cazuri de utilizare, dar dacă aveți nevoie de funcționalitate nativă personalizată, atunci va trebui să o implementați singur.
La sfârșitul zilei, totul depinde de cazul dvs. de utilizare. Dacă vedeți că aplicația dvs. nu trebuie să funcționeze cu o grămadă de servicii, instrumente și API-uri native, atunci mergeți la Fuse. În caz contrar, nu. Nu cu excepția cazului în care aveți mult timp să vă rezervați în dezvoltarea modulelor native personalizate!
Acum ar trebui să înțelegeți bine ce este Fuse, cum funcționează, avantajele și dezavantajele sale și dacă merită încercat ca o alternativă la cadrele de dezvoltare mobile mai populare. În cea de-a doua parte a acestei serii, vom examina cum să dezvoltăm o aplicație cu Fuse.