Introducerar säkring för Cross-Platform App Development

Det finns ingen brist på verktyg när det gäller att utveckla appar som fungerar över plattformen. Det började ursprungligen med PhoneGap, som då blev Cordova. Därefter kom hybridramarna med nära-native prestanda, som React Native och NativeScript. Och mer nyligen kom Googles Flutter. 

Min poäng är att det finns många av dessa ramar där ute. Du kommer att tro på mig om du bara gör en snabb Google-sökning av "plattformar för mobil utveckling av mobil utveckling". Om du precis börjat utveckla mobilappar kan det vara förlamande. Därför är det viktigt att lära känna dina alternativ.

Så idag ska jag introducera dig till Fuse, ännu en plattform för att utveckla mobilappar som fungerar cross-platform.

I den här artikeln kommer jag att sträva efter att svara på följande frågor:

  • Vad är Fuse?
  • Vad är dess fördelar och nackdelar?
  • Hur fungerar det?
  • Hur jämför det med mer populära alternativ som React Native?

Vad är säkring?

Fuse är en plattform för att utveckla plattformsapplikationer med UX Markup och JavaScript. Det är i samma kategori som React native och NativeScript, men dess huvudförsäljningspunkt är att tillhandahålla verktyg som gör det möjligt för utvecklare och designers att samarbeta i realtid.

Fuse använder UX Markup, ett XML-baserat språk som ger byggstenarna för användargränssnittet. Det låter dig också ange hur de olika komponenterna skulle uppträda när användarna interagerar med dem, därmed namnet "UX".

En annan viktig sak att förstå när du börjar med Fuse är att det inte är en webbläsarbaserad plattform som Cordova. Så även om det tillåter dig att använda JavaScript-kod, fungerar inte alla JavaScript-funktioner som är tillgängliga i en webbläsarmiljö. 

Fuse ger en anständig samling polyfilter som gör att du kan göra saker som att utföra AJAX-förfrågningar eller ställa in ett intervall för att exekvera ett kodnummer. Annat än det är du begränsad till kärnan JavaScript-funktionerna.

Pros

  • Plattformsoberoende: låter dig bygga appar som körs på både Android och iOS-enheter.
  • Native prestanda: UX Markup är sammanställd med inbyggd kod, vilket är anledningen till att prestandan är jämförbar med inhemsk (om inte samma). De olika effekterna och animationerna är OpenGL-accelererade, vilket ger en förstklassig användarupplevelse.
  • Deklarativ kod: animeringar, effekter och övergångar deklareras via UX Markup. Så saker som att skala en knapp när den klickas hanteras rent via UX Markup. Detta låter dig fokusera din JavaScript-kod på saker som att göra förfrågningar till API, utföra beräkningar och skriva affärslogik.
  • Utvecklare- och designvänlig: Fuse använder teknik som webbutvecklare känner och älskar: JavaScript för bearbetningsuppgifter och ett XML-språk för UX. UX Markup som de använder för att bygga gränssnittet är mycket enkelt, vilket gör det enkelt att använda, även för designers.
  • Bra dokumentation: De olika funktionerna och API: erna är väl dokumenterade. De har också en samling exempel, men det visar mestadels deras UX. 
  • utdrag~~POS=TRUNC: Fuse använder ett språk som heter Uno för att utöka inbyggd funktionalitet. Det innebär att du själv kan implementera anpassad funktionalitet om du behöver inbyggd funktionalitet som inte exponeras via Fuse's JavaScript API.

Nackdelar

  • Ungt samhälle: jämfört med React native, är Fuse's community fortfarande ung, och det är inte så aktivt. De har en Slack kanal och ett forum. De har också en sida för communitypaket, men när man tittar på GitHub-reposen finns det inte så mycket aktivitet. Det finns också brist på blogginlägg och handledning om Fuse.
  • Inget stöd för befintliga JavaScript-ramar: Säkring stöder endast vanilj JavaScript. Så om du kommer från Vue, React eller Angular och du vill använda dina färdigheter på Fuse-plattformen är det tyvärr inte möjligt.
  • Inget Linux-stöd: Du kan inte utveckla appar med Fuse om du inte är på Windows eller MacOS. 
  • Inget NPM-stöd och paketsystem: Du kan inte använda NPM för att installera och använda befintliga JavaScript-bibliotek. Även om det finns några JavaScript-bibliotek som är kända för att fungera, är en plattform inte riktigt komplett utan ett paketsystem som tillåter utvecklare att installera befintliga bibliotek som implementerar en viss funktionalitet! 
  • Inget Native ES6-stöd: Säkring stöder endast ECMAScript 5.1 för att skriva JavaScript-kod. Du kan dock använda en transpiler som Babel för att transpilera din ES6-kod till ES5.

Hur fungerar säkringar??

Under huven översätter Fuse UX Markup till inbyggd C ++-kod via Uno-kompilatorn. Uno är det C # -likta språket som användes för att skriva alla Fuseys kärnklasser. Så den UX Markup som du har skrivit, tillsammans med Fuse-ramen, sammanställs till C ++. Därefter tar de inbyggda plattformsverktygen (Android Studio eller Xcode) den C ++-koden och sammanställer den inbyggda appen.

När det gäller JavaScript-koden tolkas den av en JavaScript VM vid körning. Det innebär att användargränssnittet och affärslogiken är oberoende av varandra. 

Hur jämförs säkring med React native??

Ingen inledande artikel om en ny plattform skulle vara komplett utan att jämföra den med en befintlig plattform. En plattform som är jämförbar med Fuse är React Native. Så vi jämför de två plattformarna baserat på följande kriterier:

  • plattformen funktioner
  • prestanda
  • koda
  • extendability

Observera att jag bara kommer att jämföra de fria funktionerna i Fuse eftersom React Native är en fri plattform.

Plattform Funktioner

Både Fuse och React Native kommer med följande funktioner:

  • Hot reloading: Ändringar i koden återspeglas automatiskt i förhandsgranskningen av appen. Men om du jämför hur snabbt UI-uppdateringarna händer är Fuse klart vinnaren. Deras varma reload är nästan omedelbar.
  • JavaScript API för att använda inbyggd funktionalitet: både Fuse och React native ger dig tillgång till inbyggd enhetens funktionalitet, t.ex. kameran, geolocation och push-meddelanden genom ett JavaScript-API. Men om du jämför dokumentationen är det tydligt att React Native har fler API-er tillgängliga.

Här är de funktioner som endast är tillgängliga för Fuse:

  • Förhandsgranska på flera enheter: Detta låter utvecklare och designers förhandsgranska appen på flera enheter med olika formfaktorer. Det enda kravet är att utvecklingsmaskinen ska vara på samma trådlösa nätverk som enheterna. Detta är mycket användbart eftersom de omedelbart ser om något inte ser bra ut på ett visst visningsport.
  • Skrivbordshandsvisning: Detta gör att appar kan förhandsgranskas på skrivbordet. Observera att det här har mycket liten inverkan på datorns prestanda. Detta beror på att det inte är en enhetens emulator. Förhandsgranskningen av skrivbordet låter dig också förhandsgranska appen på flera visningsportar. 
  • Förhandsgranskningsapp: Om du vill ha ett snabbt sätt att förhandsgranska din app finns en klientapp för Android och iOS också tillgänglig. Detta låter dig skanna en QR-kod, som sedan öppnar appen på enheten. Du kan göra detta för så många enheter som du vill. Ändringar i källkoden återspeglas automatiskt på alla dessa enheter. 

Den enda nackdelen med förhandsgranskningsapplikationen, i motsats till den anpassade förhandsgranskningen (standardmetoden för att förhandsgranska appar på en enhet), är den anpassade Uno-koden och tredjepartspaket fungerar inte. Geolocation, push notifieringar och lokala meddelanden fungerar inte heller. Du är bättre att använda den anpassade förhandsgranskningen i de fallen. 

Prestanda

Fuse prestanda är jämförbar med infödda eftersom UX Markup är sammanställd till inbyggda gränssnitt för den specifika plattformen. Och eftersom alla animationer, effekter och övergångar definieras i själva uppteckningen, vet man redan vad man ska göra när man till exempel trycker på en knapp. Som tidigare nämnts kör JavaScript på en separat tråd, och det påverkar inte alls användargränssnittet. Dessutom använder Fuse OpenGL ES, vilket ger hårdvaruaccelererad grafikprestanda. Detta innebär att olika animeringar och effekter kan användas samtidigt utan betydande inverkan på användargränssnittets prestanda. Detta gör Fuse till en mycket lämplig plattform för att utveckla mobila spel.

Å andra sidan använder React Native en bromodul för varje plattform. Den här modulen fungerar som en koppling mellan JavaScript-API: er (inklusive gränssnittskomponenterna) och inbyggd funktionalitet så att de kan kommunicera med varandra. Detta gör React Native mindre prestanda än säkring på grund av kommunikationskostnaden mellan de inbyggda komponenterna och React Natives motsvarande UI-komponenter. 

Koda

Både Fuse and React Native erbjuder ett märkningsspråk som ett byggblock för användargränssnittet. Men bara genom att jämföra docs av ​​Fuse och React native, kan du se att React native har fler komponenter som representerar deras inhemska motsvarigheter.

Fuse UX Markup låter dig beskriva animationer av en komponent när en användare interagerar med den. Till exempel kan du skapa en knapp som blir tre gånger så stor som den ursprungliga storleken medan den trycks in. Fuse tar hand om hur länge övergången kommer att bli om du inte anger det:

    

Å andra sidan beror React Native på JavaScript för nästan allt. I koden nedan är Textinmatning komponenten är beroende av text att initieras i staten. Den uppdaterar sedan den varje gång den text som användaren ändrar: 

 this.setState (text) value = this.state.text />

Så här visar standardtexten för ett textfält:

konstruktör (rekvisita) super (rekvisita); this.state = text: 'Standardtext'; 

Mellan de två, sättet som säkrar separerar affärslogiken från att hantera användargränssnittet är gynnsamt när det gäller samarbete mellan en utvecklare och en designer. UX Markup är enkelt för designern att förstå, så de kan arbeta med det medan utvecklaren hanterar affärslogiken. 

Extendability

Säkring ger dig möjlighet att använda samma språk som de använder för alla sina kärnklasser som ett sätt att utöka inbyggd funktionalitet. Detta kräver dock att du har kunskap om hur du använder de inbyggda API-erna i Android och iOS. Från Fuse's Uno kan du använda utländsk kod för att implementera inbyggd funktionalitet. För närvarande stöder Uno endast Objective-C för iOS och Java for Android. Den resulterande klassen är då utsatt så att du kan ringa den från JavaScript.

På liknande sätt har React Native en motsvarande bromodul för både iOS och Android. Denna bromodul fungerar som broen mellan inbyggd funktionalitet och JavaScript. Precis som Fuse kräver detta att du har en fungerande kunskap om Objective-C eller Java.

Båda plattformarna tillåter dig också att utöka inbyggda användargränssnittskomponenter för var och en av dina målplattformar. Så, om du till exempel vill implementera en motsvarande UI-komponent för den inbyggda verktygstipskontrollen på Android? Du kan göra det på både Fuse och React native.

Är säkringar värt det?

Om du frågar mig, skulle jag säga att det beror på ditt specifika användningsfall. Säkring är definitivt produktionsklar. Dess främsta fördel är dess prestanda och hur snabbt du kan gå från en idé till en fungerande prototyp. Apps skapade med Fuse är mycket prestanda, och det gör också samarbete mellan utvecklare och designers väldigt enkelt.

Dess största nackdel är dess gemenskap. Säkringar är tydligt engagerade i öppen källkod med utgivandet av bibliotek som gör Fuse-arbetet under huven. Men de är fortfarande ett litet företag (jämfört med Facebook, åtminstone). Det innebär att de måste tjäna pengar på ett eller annat sätt. Det är därför de har professionella betalda planer som är mer inriktade på lag och företag. Så man kan anta att de flesta av sina ansträngningar kommer att sättas mot att utveckla dessa betalda verktyg. Detta gör att öppen källkod är en andraklassig medborgare. 

Om du arbetar för ett företag som utvecklar applikationer dagligen, är Fuse ett bra alternativ. Men om du är en oberoende utvecklare som jag, är vi oftast fast med att använda den fria planen. Det är tillräckligt bra för de flesta användningsfall, men om du behöver anpassad inbyggd funktionalitet måste du själv implementera det.

I slutet av dagen beror allt på ditt användarfall. Om du ser att din app inte behöver arbeta med en hel massa tjänster, verktyg och inbyggda API-skivor, gå sedan till Fuse. Annars, gör det inte. Inte om du inte har mycket tid att spara när du utvecklar egna moduler!

Slutsats

Du bör nu ha en god förståelse för vad säkring är, hur det fungerar, dess fördelar och nackdelar, och om det är värt att prova som ett alternativ till mer populära mobilutvecklingsramar. I den andra delen av denna serie tittar vi på hur man utvecklar en app med Fuse.