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:
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.
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.
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:
Observera att jag bara kommer att jämföra de fria funktionerna i Fuse eftersom React Native är en fri plattform.
Både Fuse och React Native kommer med följande funktioner:
Här är de funktioner som endast är tillgängliga för Fuse:
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.
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.
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.
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.
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!
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.