Innføring av sikring for Cross-Platform App Development

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:

  • Hva er Fuse?
  • Hva er dens fordeler og ulemper??
  • Hvordan virker det?
  • Hvordan sammenligner det med mer populære alternativer som React Native?

Hva er sikring?

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.

Pros

  • Kryssplattform: lar deg bygge apper som kjører på både Android og iOS-enheter.
  • Native ytelse: UX Markup er kompilert til innfødt kode, og derfor er ytelsen sammenlignbar med innfødte (om ikke det samme). De ulike effektene og animasjonene er OpenGL-akselerert, noe som gir en førsteklasses brukeropplevelse.
  • Deklarativ kode: animasjoner, effekter og overganger er deklarert via UX Markup. Så ting som å skalere en knapp når den klikkes, håndteres rent via UX Markup. Dette lar deg fokusere JavaScript-koden på ting som å gjøre forespørsler til APIer, utføre beregninger og skrive forretningslogikk.
  • Utvikler- og designvennlig: Fuse bruker teknologier som webutviklere kjenner og elsker: JavaScript for behandling av oppgaver og et XML-lignende språk for UX. UX Markup de bruker til å bygge brukergrensesnittet er veldig enkelt, noe som gjør det enkelt å bruke, selv for designere.
  • God dokumentasjon: De forskjellige funksjonene og APIene er godt dokumentert. De har også en samling eksempler, selv om det hovedsakelig viser sine UX. 
  • Uttrekkbar: Sikring bruker et språk som heter Uno for å utvide innfødt funksjonalitet. Dette betyr at du selv kan implementere tilpasset funksjonalitet selv om du trenger innfødt funksjonalitet som ikke er utsatt via Fuse's JavaScript-APIer.

Ulemper

  • Unge samfunn: Sammenlignet med React native, er Fuse's samfunn fortsatt ung, og det er egentlig ikke så aktivt. De har en slakk kanal og et forum. De har også en side for fellesskapspakker, men når du ser på GitHub repos, er det ikke så mye aktivitet. Det er også mangel på blogginnlegg og veiledninger om sikring.
  • Ingen støtte for eksisterende JavaScript-rammer: Sikringen støtter bare vanilla JavaScript. Så hvis du kommer fra Vue, React eller Angular, og du vil bruke dine ferdigheter på Fuse-plattformen, er det dessverre ikke mulig.
  • Ingen Linux-støtte: Du kan ikke utvikle apps med sikring hvis du ikke er på Windows eller MacOS. 
  • Ingen NPM-støtte og pakke system: Du kan ikke bruke NPM til å installere og bruke eksisterende JavaScript-biblioteker. Selv om det finnes noen få JavaScript-biblioteker som er kjent for å fungere, er en plattform egentlig ikke fullstendig uten et pakkesystem som lar utviklere installere eksisterende biblioteker som implementerer en bestemt funksjonalitet! 
  • Ingen innfødt ES6-støtte: Sikring støtter bare ECMAScript 5.1 for å skrive JavaScript-kode. Du kan imidlertid bruke en transpiler som Babel til å transpilere ES6-koden til ES5.

Hvordan fungerer sikringen??

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. 

Hvordan samsvarer sikringen til å reagere innfødt?

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:

  • plattformfunksjoner
  • opptreden
  • kode
  • strekkbarhet

Vær oppmerksom på at jeg bare vil sammenligne de fria funksjonene til sikring fordi React Native er en fri plattform.

Plattformfunksjoner

Både Fuse og React Native kommer med følgende funksjoner:

  • Varm opplasting: Endringer i koden gjenspeiles automatisk i forhåndsvisning av appen. Men hvis du sammenligner hvor fort UI-oppdateringene skjer, er Fuse klart vinneren. Deres hot reload er nesten øyeblikkelig.
  • JavaScript-APIer for bruk av innfødt funksjonalitet: både Fuse og React native gir deg tilgang til innfødt enhetsfunksjonalitet, for eksempel kameraet, geolocation, og push notifications gjennom en JavaScript API. Men hvis du sammenligner dokumentasjonen, er det klart at React Native har flere APIer tilgjengelig.

Her er funksjonene som kun er tilgjengelige for sikring:

  • Forhåndsvisning på flere enheter: Dette lar utviklere og designere forhåndsvise appen på flere enheter med forskjellige formfaktorer. Det eneste kravet er at utviklingsmaskinen skal være på samme trådløse nettverk som enhetene. Dette er veldig nyttig fordi de umiddelbart ser om noe ikke ser bra ut på et bestemt visningsport.
  • Forhåndsvisning av skrivebordet: Dette gjør at appene kan forhåndsvises på skrivebordet. Vær oppmerksom på at dette vil få svært lite innvirkning på datamaskinens ytelse. Dette er fordi det egentlig ikke er en enhetsemulator. Med forhåndsvisning av skrivebordet kan du også forhåndsvise appen på flere visningsporte. 
  • Forhåndsvisning App: Hvis du vil ha en rask måte å forhåndsvise appen din, er en klientapp for Android og iOS også tilgjengelig. Dette lar deg skanne en QR-kode, som deretter åpner appen på enheten. Du kan gjøre dette for så mange enheter som du vil. Endringer i kildekoden gjenspeiles automatisk på hver enkelt av disse enhetene. 

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. 

Opptreden

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. 

Kode

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. 

strekkbarhet

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.

Er sikring verdt det?

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!

Konklusjon

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.