Einführung von Fuse für die plattformübergreifende App-Entwicklung

An Tools fehlt es nicht, wenn es darum geht, Apps zu entwickeln, die plattformübergreifend funktionieren. Es begann ursprünglich mit PhoneGap, aus dem dann Cordova wurde. Dann kamen die Hybrid-Frameworks mit nahezu nativer Performance wie React Native und NativeScript. Und in letzter Zeit kam Google Flutter. 

Mein Punkt ist, dass es viele dieser Frameworks gibt. Sie werden mir glauben, wenn Sie einfach eine schnelle Google-Suche nach "plattformübergreifenden mobilen Entwicklungsframeworks" durchführen. Wenn Sie gerade erst mit der Entwicklung mobiler Apps beginnen, kann dies zu einer Lähmung führen. Deshalb ist es wichtig, Ihre Möglichkeiten kennenzulernen.

Heute möchte ich Ihnen Fuse vorstellen, eine weitere Plattform für die Entwicklung mobiler Apps, die plattformübergreifend funktionieren.

In diesem Artikel möchte ich folgende Fragen beantworten:

  • Was ist Fuse??
  • Was sind ihre Vor- und Nachteile??
  • Wie funktioniert es?
  • Wie kann es mit populäreren Alternativen wie React Native verglichen werden??

Was ist Sicherung??

Fuse ist eine Plattform für die Entwicklung von plattformübergreifenden Apps mit UX Markup und JavaScript. Es ist in derselben Kategorie wie React Native und NativeScript, aber das Hauptverkaufsargument liegt in der Bereitstellung von Tools, mit denen Entwickler und Designer in Echtzeit zusammenarbeiten können.

Fuse verwendet UX Markup, eine XML-basierte Sprache, die die Bausteine ​​für die Benutzeroberfläche bereitstellt. Hier können Sie auch angeben, wie sich die verschiedenen Komponenten bei der Interaktion der Benutzer verhalten würden, daher der Name "UX"..

Für die ersten Schritte mit Fuse ist es wichtig zu wissen, dass es sich nicht um eine browserbasierte Plattform wie Cordova handelt. Obwohl Sie die Verwendung von JavaScript-Code ermöglichen, funktionieren nicht alle in einer Browser-Umgebung verfügbaren JavaScript-Funktionen. 

Fuse bietet eine anständige Sammlung von Polyfills, mit denen Sie beispielsweise AJAX-Anforderungen ausführen oder ein Intervall für die Ausführung eines Codes festlegen können. Ansonsten sind Sie auf die wichtigsten JavaScript-Funktionen beschränkt.

Pros

  • Plattformübergreifend: ermöglicht das Erstellen von Apps, die auf Android- und iOS-Geräten ausgeführt werden können.
  • Native Leistung: UX Markup wird zu nativem Code kompiliert, weshalb die Leistung mit nativem (vergleichbarem) vergleichbar ist. Die verschiedenen Effekte und Animationen sind OpenGL-beschleunigt, was für ein erstklassiges Benutzererlebnis sorgt.
  • Deklarativer Code: Animationen, Effekte und Übergänge werden über UX Markup deklariert. So wird beispielsweise das Skalieren einer Schaltfläche beim Anklicken nur über das UX-Markup verwaltet. Auf diese Weise können Sie Ihren JavaScript-Code auf Dinge wie das Anfordern von APIs, das Durchführen von Berechnungen und das Schreiben von Geschäftslogik konzentrieren.
  • Entwickler- und designerfreundlich: Fuse verwendet Technologien, die Webentwickler kennen und lieben: JavaScript für die Verarbeitung von Aufgaben und eine XML-ähnliche Sprache für die UX. Der UX-Markup, den sie für die Erstellung der Benutzeroberfläche verwenden, ist sehr einfach und daher auch für Designer einfach zu verwenden.
  • Gute Dokumentation: Die verschiedenen Funktionen und APIs sind gut dokumentiert. Sie haben auch eine Sammlung von Beispielen, obwohl es meistens ihre UX zeigt. 
  • Erweiterbar: Fuse verwendet eine Sprache namens Uno, um die native Funktionalität zu erweitern. Das bedeutet, dass Sie benutzerdefinierte Funktionen selbst implementieren können, wenn Sie native Funktionen benötigen, die nicht über die JavaScript-APIs von Fuse verfügbar sind.

Cons

  • Junge Gemeinschaft: Im Vergleich zu React Native ist die Community von Fuse noch jung und nicht wirklich aktiv. Sie haben einen Slack-Kanal und ein Forum. Sie haben auch eine Seite für Community-Pakete, aber wenn Sie sich die GitHub-Repos ansehen, gibt es nicht wirklich viel Aktivität. Es gibt auch einen Mangel an Blogbeiträgen und Tutorials zu Fuse.
  • Keine Unterstützung für vorhandene JavaScript-Frameworks: Fuse unterstützt nur Vanille-JavaScript. Wenn Sie also von Vue, React oder Angular kommen und Ihre Fähigkeiten auf der Fuse-Plattform einsetzen möchten, ist dies leider nicht möglich.
  • Keine Linux-Unterstützung: Sie können keine Apps mit Fuse entwickeln, wenn Sie weder Windows noch Mac OS verwenden. 
  • Kein NPM-Support und Paketsystem: Sie können NPM nicht verwenden, um vorhandene JavaScript-Bibliotheken zu installieren und zu verwenden. Obwohl es einige JavaScript-Bibliotheken gibt, von denen bekannt ist, dass sie funktionieren, ist eine Plattform ohne ein Paketsystem, das Entwicklern die Installation vorhandener Bibliotheken ermöglicht, die eine bestimmte Funktionalität implementieren, nicht wirklich vollständig! 
  • Keine native ES6-Unterstützung: Fuse unterstützt nur ECMAScript 5.1 zum Schreiben von JavaScript-Code. Sie können jedoch einen Transpiler wie Babel verwenden, um Ihren ES6-Code nach ES5 zu verschieben.

Wie funktioniert die Sicherung??

Unter der Haube übersetzt Fuse den UX Markup über den Uno-Compiler in nativen C ++ - Code. Uno ist die C # -ähnliche Sprache, mit der alle Kernklassen von Fuse geschrieben wurden. Das von Ihnen geschriebene UX Markup wird zusammen mit dem Fuse-Framework in C ++ kompiliert. Danach übernehmen die nativen Plattform-Tools (Android Studio oder Xcode) diesen C ++ - Code und kompilieren die native App.

Der JavaScript-Code wird zur Laufzeit von einer JavaScript-VM interpretiert. Dies bedeutet, dass die Benutzeroberfläche und die Geschäftslogik voneinander unabhängig sind. 

Wie lässt sich Fuse mit React Native vergleichen??

Kein Einführungsartikel über eine neue Plattform wäre vollständig, ohne sie mit einer vorhandenen Plattform zu vergleichen. Eine Plattform, die mit Fuse vergleichbar ist, ist React Native. Wir werden diese beiden Plattformen also anhand folgender Kriterien vergleichen:

  • Plattformfunktionen
  • Performance
  • Code
  • Erweiterbarkeit

Beachten Sie, dass ich nur die kostenlosen Funktionen von Fuse vergleiche, da React Native eine kostenlose Plattform ist.

Plattformfunktionen

Fuse und React Native verfügen über die folgenden Funktionen:

  • Heißes Nachladen: Änderungen am Code werden automatisch in der App-Vorschau angezeigt. Wenn Sie jedoch vergleichen, wie schnell die Aktualisierung der Benutzeroberfläche erfolgt, ist Fuse eindeutig der Gewinner. Ihr heißes Nachladen ist fast augenblicklich.
  • JavaScript-APIs zur Verwendung nativer Funktionen: Mit Fuse und React Native können Sie über eine JavaScript-API auf native Gerätefunktionen wie Kamera, Geolocation und Push-Benachrichtigungen zugreifen. Wenn Sie jedoch die Dokumentation vergleichen, ist es klar, dass React Native mehr APIs zur Verfügung hat.

Hier sind die Funktionen, die nur für Fuse verfügbar sind:

  • Vorschau auf mehreren Geräten: Dadurch können Entwickler und Designer die App auf mehreren Geräten mit unterschiedlichen Formfaktoren in der Vorschau anzeigen. Die einzige Voraussetzung ist, dass sich der Entwicklungscomputer im selben drahtlosen Netzwerk befindet wie die Geräte. Dies ist sehr nützlich, da sie sofort sehen, ob etwas in einem bestimmten Ansichtsfenster nicht gut aussieht.
  • Desktop-Vorschau: Auf diese Weise können die Apps auf dem Desktop in der Vorschau angezeigt werden. Beachten Sie, dass dies nur einen geringen Einfluss auf die Leistung Ihres Computers hat. Dies ist darauf zurückzuführen, dass es sich nicht um einen Geräteemulator handelt. In der Desktop-Vorschau können Sie auch eine Vorschau der App in mehreren Ansichtsfenstern anzeigen. 
  • Vorschau App: Wenn Sie eine schnelle Vorschau Ihrer App wünschen, ist auch eine Client-App für Android und iOS verfügbar. So können Sie einen QR-Code scannen, der die App auf dem Gerät öffnet. Sie können dies für beliebig viele Geräte tun. Änderungen am Quellcode werden automatisch auf jedem dieser Geräte übernommen. 

Der einzige Nachteil der Vorschau-App im Gegensatz zur benutzerdefinierten Vorschau (der Standardmethode für die Vorschau von Apps auf einem Gerät) ist, dass benutzerdefinierter Uno-Code und Pakete von Drittanbietern nicht funktionieren. Geolocation, Push-Benachrichtigungen und lokale Benachrichtigungen funktionieren ebenfalls nicht. In diesen Fällen ist es besser, die benutzerdefinierte Vorschau zu verwenden. 

Performance

Die Leistung von Fuse ist mit der nativen vergleichbar, da der UX-Markup für die jeweilige Plattform mit der nativen Benutzeroberfläche kompiliert wird. Und da alle Animationen, Effekte und Übergänge im Markup selbst definiert sind, wissen sie bereits, was zu tun ist, wenn beispielsweise eine Schaltfläche gedrückt wird. Wie bereits erwähnt, wird JavaScript in einem separaten Thread ausgeführt und hat keinerlei Auswirkungen auf die Leistung der Benutzeroberfläche. Darüber hinaus verwendet Fuse OpenGL ES, das eine hardwarebeschleunigte Grafikleistung bietet. Dies bedeutet, dass verschiedene Animationen und Effekte gleichzeitig verwendet werden können, ohne dass dies Auswirkungen auf die Leistung der Benutzeroberfläche hat. Dies macht Fuse zu einer sehr geeigneten Plattform für die Entwicklung mobiler Spiele.

Andererseits verwendet React Native für jede Plattform ein Brückenmodul. Dieses Modul dient als Verbindung zwischen den JavaScript-APIs (einschließlich der UI-Komponenten) und der nativen Funktionalität, damit sie miteinander kommunizieren können. Dadurch ist React Native aufgrund der Kommunikationskosten zwischen den nativen Komponenten und den entsprechenden UI-Komponenten von React Native weniger leistungsfähig als Fuse. 

Code

Sowohl Fuse als auch React Native bieten eine Markup-Sprache als Baustein für die Benutzeroberfläche. Beim Vergleich der Dokumente von Fuse und React Native können Sie jedoch feststellen, dass React Native mehr Komponenten enthält, die ihre natürlichen Gegenstücke darstellen.

Mit dem UX Markup von Fuse können Sie die Animationen einer Komponente beschreiben, wenn ein Benutzer damit interagiert. So können Sie beispielsweise eine Schaltfläche erstellen, die dreimal so groß ist wie ihre ursprüngliche Größe, während sie gedrückt wird. Fuse sorgt dafür, wie lange der Übergang dauert, wenn Sie ihn nicht angeben:

    

Auf der anderen Seite setzt React Native für fast alles JavaScript ein. Im folgenden Code steht der Text Eingabe Komponente beruht auf Text im Zustand initialisiert werden. Sie aktualisiert es dann jedes Mal, wenn sich der vom Benutzer eingegebene Text ändert: 

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

So wird der Standardtext für ein Textfeld angegeben:

Konstruktor (Requisiten) Super (Requisiten); this.state = text: 'Default Text'; 

Die Art und Weise, wie Fuse die Geschäftslogik von der Verwaltung der Benutzeroberfläche trennt, ist günstig für die Zusammenarbeit zwischen einem Entwickler und einem Designer. UX Markup ist für den Designer einfach genug, um es zu verstehen, sodass er daran arbeiten kann, während der Entwickler die Geschäftslogik handhabt. 

Erweiterbarkeit

Mit Fuse können Sie dieselbe Sprache verwenden, die sie für alle ihre Kernklassen verwenden, um die native Funktionalität zu erweitern. Dazu müssen Sie jedoch wissen, wie die systemeigenen APIs in Android und iOS verwendet werden. Mit Fuse Uno können Sie Fremdcode verwenden, um native Funktionen zu implementieren. Derzeit unterstützt Uno nur Objective-C für iOS und Java für Android. Die resultierende Klasse wird dann verfügbar gemacht, sodass Sie sie von JavaScript aus aufrufen können.

Ebenso verfügt React Native über ein entsprechendes Bridge-Modul für iOS und Android. Dieses Brückenmodul dient als Brücke zwischen nativer Funktionalität und JavaScript. Genau wie bei Fuse müssen Sie über Kenntnisse in Objective-C oder Java verfügen.

Mit beiden Plattformen können Sie auch native UI-Komponenten für jede Ihrer Zielplattformen erweitern. Was ist, wenn Sie beispielsweise eine entsprechende UI-Komponente für die native Tooltip-Steuerung auf Android implementieren möchten? Sie können dies sowohl für Fuse als auch für React Native tun.

Ist Fuse es wert?

Wenn Sie nach meiner Meinung fragen, würde ich sagen, dass dies von Ihrem speziellen Anwendungsfall abhängt. Fuse ist definitiv serienreif. Sein Hauptvorteil ist die Leistung und wie schnell Sie von einer Idee zu einem funktionierenden Prototyp gelangen können. Mit Fuse erstellte Apps sind hochperformant und machen die Zusammenarbeit zwischen Entwicklern und Designern sehr einfach.

Sein Hauptnachteil ist die Gemeinschaft. Fuse setzt sich bei der Veröffentlichung der Bibliotheken eindeutig für Open Source ein, wodurch Fuse unter der Haube funktioniert. Sie sind jedoch immer noch eine kleine Firma (zumindest im Vergleich zu Facebook). Dies bedeutet, dass sie auf die eine oder andere Weise Geld verdienen müssen. Deshalb haben sie professionell bezahlte Pläne, die stärker auf Teams und das Unternehmen ausgerichtet sind. Man kann also davon ausgehen, dass der größte Teil ihrer Bemühungen auf die Entwicklung dieser kostenpflichtigen Instrumente gerichtet ist. Damit bleibt der Open-Source-Einsatz ein Bürger zweiter Klasse. 

Wenn Sie für ein Unternehmen arbeiten, das täglich Apps entwickelt, ist Fuse eine gute Option. Wenn Sie jedoch ein unabhängiger Entwickler wie ich sind, verwenden wir meistens den kostenlosen Plan. Für die meisten Anwendungsfälle ist dies ausreichend, aber wenn Sie eine benutzerdefinierte native Funktionalität benötigen, müssen Sie sie selbst implementieren.

Am Ende des Tages hängt alles von Ihrem Anwendungsfall ab. Wenn Sie feststellen, dass Ihre App nicht mit einer ganzen Reihe von Diensten, Tools und nativen APIs arbeiten muss, sollten Sie sich für Fuse entscheiden. Sonst nicht. Es sei denn, Sie haben viel Zeit für die Entwicklung benutzerdefinierter nativer Module!

Fazit

Sie sollten jetzt ein gutes Verständnis dafür haben, was Fuse ist, wie es funktioniert, welche Vor- und Nachteile es gibt, und ob es sich lohnt, es als Alternative zu populäreren mobilen Entwicklungsrahmen auszuprobieren. Im zweiten Teil dieser Serie wird gezeigt, wie Sie eine App mit Fuse entwickeln.