Det er ingen mangel på verktøy når det gjelder å utvikle apps som fungerer på tvers av plattformen. Det startet opprinnelig med PhoneGap, som da ble Cordova. Så kom hybridrammer med nær-innfødt ytelse, som React Native og NativeScript. Og mer nylig kom Google's Flutter.
Mitt poeng er at det er mange av disse rammene der ute. Du vil tro på meg hvis du bare gjør et raskt Google-søk på "mobile plattformer for mobil utvikling". Hvis du bare begynner å utvikle mobilapper, kan det være lammende. Derfor er det viktig å bli kjent med alternativene dine.
Så i dag skal jeg introdusere deg til Fuse, enda en plattform for å utvikle mobile apper som fungerer på tvers av plattformen.
I denne artikkelen vil jeg sikte på å svare på følgende spørsmål:
Fuse er en plattform for å utvikle plattformer med UX Markup og JavaScript. Det er i samme kategori som React Native og NativeScript, men det viktigste salgsargumentet er å tilby verktøy som gjør det mulig for utviklere og designere å samarbeide i sanntid.
Sikring bruker UX Markup, et XML-basert språk som gir byggeblokkene for brukergrensesnittet. Det lar deg også spesifisere hvordan de forskjellige komponentene vil oppføre seg når brukere samhandler med dem, og dermed navnet "UX".
En annen viktig ting å forstå når du kommer i gang med Fuse er at det ikke er en nettleserbasert plattform som Cordova. Så selv om det tillater deg å bruke JavaScript-kode, fungerer ikke alle JavaScript-funksjoner som er tilgjengelige i et nettlesermiljø.
Sikring gir en anstendig samling av polyfilter som tillater deg å gjøre ting som å utføre AJAX-forespørsler eller angi et intervall for å utføre et stykke kode. Annet enn det, er du begrenset til kjerne JavaScript-funksjonene.
Under hetten oversetter Fuse UX Markup til innfødt C ++-kode via Uno-kompilatoren. Uno er det C # -like språket som ble brukt til å skrive alle Fuse's kjerneklasser. Så UX Markup som du har skrevet sammen med Fuse-rammen, er kompilert til C ++. Deretter tar de opprinnelige plattformverktøyene (Android Studio eller Xcode) den C ++-koden og kompilerer den opprinnelige appen.
Når det gjelder JavaScript-koden, tolkes den av en JavaScript VM ved kjøring. Dette betyr at brukergrensesnittet og forretningslogikken er uavhengig av hverandre.
Ingen innledende artikkel om en ny plattform ville være komplett uten å sammenligne den med en eksisterende plattform. En plattform som kan sammenlignes med Fuse er React Native. Så vi sammenligner disse to plattformene basert på følgende kriterier:
Vær oppmerksom på at jeg bare vil sammenligne de fria funksjonene til sikring fordi React Native er en fri plattform.
Både Fuse og React Native kommer med følgende funksjoner:
Her er funksjonene som kun er tilgjengelige for sikring:
Den eneste ulempen av forhåndsvisningsprogrammet, i motsetning til det egendefinerte forhåndsvisningsprogrammet (standard måte å forhåndsvise apper på en enhet) på, er at egendefinert Uno-kode og tredjepartspakker ikke fungerer. Geolocation, push meldinger, og lokale meldinger vil heller ikke fungere. Du har det bedre å bruke det egendefinerte forhåndsvisning i de tilfellene.
Fuse ytelse kan sammenlignes med innfødte fordi UX Markup er kompilert til opprinnelig brukergrensesnitt for den spesifikke plattformen. Og fordi alle animasjoner, effekter og overganger er definert i selve oppslaget, vet det allerede hva man skal gjøre når man for eksempel trykker på en knapp. Som nevnt, kjører JavaScript på en egen tråd, og det vil ikke påvirke brukergrensesnittets ytelse i det hele tatt. I tillegg bruker Fuse OpenGL ES, som gir maskinvareakselerert grafikkytelse. Dette innebærer at forskjellige animasjoner og effekter kan brukes samtidig uten betydelig innvirkning på brukergrensesnittets ytelse. Dette gjør Fuse til en meget egnet plattform for å utvikle mobile spill.
På den annen side bruker React Native en bromodul for hver plattform. Denne modulen fungerer som en forbindelse mellom JavaScript-APIer (inkludert brukergrensesnittkomponenter) og innfødt funksjonalitet, slik at de kan kommunisere med hverandre. Dette gjør React Native mindre ytelse enn Fuse på grunn av kommunikasjonskostnaden mellom de opprinnelige komponentene og React Natives tilsvarende UI-komponenter.
Både Fuse and React Native tilbyr et oppslagsspråk som byggestein for brukergrensesnittet. Men bare ved å sammenligne dokumentene til Fuse og React Native, kan du se at React Native har flere komponenter som representerer deres native kolleger.
Fuse UX Markup lar deg beskrive animasjonene til en komponent når en bruker samhandler med den. For eksempel, her kan du lage en knapp som blir tre ganger så stor som den opprinnelige størrelsen mens den trykkes. Sikring tar vare på hvor lenge overgangen vil være hvis du ikke angir det:
På den annen side er React Native avhengig av JavaScript for nesten alt. I koden under, er TextInput
komponenten er avhengig av tekst
å bli initialisert i staten. Den oppdaterer den da hver gang teksten som brukeren endrer:
this.setState (text) value = this.state.text />
Slik følger standardteksten for et tekstfelt:
konstruktør (rekvisitter) super (rekvisitter); this.state = text: 'Standard Text';
Mellom de to, slik Fuse skiller forretningslogikk fra å administrere brukergrensesnittet, er gunstig når det gjelder samarbeid mellom en utvikler og designer. UX Markup er enkelt nok til at designeren skal forstå, slik at de kan jobbe med det mens utvikleren håndterer forretningslogikken.
Sikring lar deg bruke det samme språket som de bruker til alle sine kjerneklasser som en måte å utvide innfødt funksjonalitet på. Dette krever imidlertid at du har kunnskap om hvordan du bruker de innfødte APIene i Android og iOS. Fra Fuse's Uno kan du bruke utenlandsk kode til å implementere innfødt funksjonalitet. For tiden støtter Uno bare Objective-C for iOS og Java for Android. Den resulterende klassen blir så eksponert slik at du kan ringe den fra JavaScript.
På samme måte har React Native en tilsvarende bromodul for både iOS og Android. Denne bromodulen fungerer som broen mellom innfødt funksjonalitet og JavaScript. Akkurat som Fuse, dette krever at du har arbeidskunnskap om Objective-C eller Java.
Begge plattformene tillater deg også å utvide innfødte brukergrensesnittkomponenter for hver av dine målplattformer. Så hva hvis du for eksempel vil implementere en tilsvarende UI-komponent for den innfødte verktøytipkontrollen på Android? Du kan gjøre det på både sikring og reagensfødt.
Hvis du spør min mening, vil jeg si det avhenger av din spesifikke brukstilfelle. Sikringen er definitivt produksjonsklar. Dens største fordel er ytelsen og hvor raskt du kan gå fra en ide til en fungerende prototype. Apper opprettet med Fuse er svært effektive, og det gjør også samarbeid mellom utviklere og designere veldig enkelt.
Dens viktigste ulempe er samfunnet. Sikring er åpenbart forpliktet til åpen kildekode med utgivelsen av bibliotekene som gjør Fuse arbeid under hetten. Imidlertid er de fortsatt et lite selskap (sammenlignet med Facebook, i det minste). Dette betyr at de må tjene penger på en eller annen måte. Det er derfor de har profesjonelle betalt planer som er mer rettet mot lag og bedriften. Så man kan anta at de fleste av deres innsats vil bli satt på å utvikle disse betalte verktøyene. Dette gjør at åpen kildekodeinnretning er en førsteklasses statsborger.
Hvis du jobber for et selskap som utvikler programmer daglig, er Fuse et godt alternativ. Men hvis du er en uavhengig utvikler som meg, er vi for det meste fast med å bruke gratisplanen. Den er god nok til de fleste brukstilfeller, men hvis du trenger tilpasset innfødt funksjonalitet, må du selv implementere det.
På slutten av dagen, alt avhenger av brukssaken din. Hvis du ser at appen din ikke trenger å jobbe med en hel masse tjenester, verktøy og innfødte APIer, så gå til Fuse. Ellers ikke. Ikke med mindre du har mye tid til å spare når du utvikler egendefinerte innfødte moduler!
Du bør nå ha en god forståelse av hva sikring er, hvordan det fungerer, fordeler og ulemper, og hvis det er verdt å prøve ut som et alternativ til mer populære mobilutviklingsrammer. I den andre delen av denne serien tar vi en titt på hvordan du utvikler en app med sikring.