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:
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.
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.
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:
Beachten Sie, dass ich nur die kostenlosen Funktionen von Fuse vergleiche, da React Native eine kostenlose Plattform ist.
Fuse und React Native verfügen über die folgenden Funktionen:
Hier sind die Funktionen, die nur für Fuse verfügbar sind:
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.
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.
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.
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.
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!
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.