Présentation de Fuse pour le développement d'applications multiplates-formes

Les outils permettant de développer des applications multi-plateformes ne manquent pas. Tout a commencé avec PhoneGap, qui est ensuite devenu Cordova. Viennent ensuite les frameworks hybrides aux performances quasi-natales, comme React Native et NativeScript. Et plus récemment est venu Flutter de Google. 

Mon point est qu'il y a beaucoup de ces cadres là-bas. Vous me croirez si vous venez de faire une recherche rapide dans Google sur les "cadres de développement mobile multi-plateformes". Si vous commencez juste à développer des applications mobiles, cela peut être paralysant. C'est pourquoi il est important de connaître vos options.

Donc, aujourd’hui, je vais vous présenter Fuse, une autre plateforme pour développer des applications mobiles multi-plateformes..

Dans cet article, je chercherai à répondre aux questions suivantes:

  • Qu'est-ce que Fuse??
  • Quels sont ses avantages et ses inconvénients?
  • Comment ça marche?
  • Comment se compare-t-il aux alternatives plus populaires telles que React Native??

Qu'est-ce que Fuse??

Fuse est une plate-forme de développement d'applications multiplates-formes avec UX Markup et JavaScript. C'est dans la même catégorie que React Native et NativeScript, mais son principal argument de vente réside dans la fourniture d'outils permettant aux développeurs et aux concepteurs de collaborer en temps réel..

Fuse utilise UX Markup, un langage basé sur XML qui fournit les blocs de construction de l'interface utilisateur. Il vous permet également de spécifier le comportement des différents composants lorsque les utilisateurs interagissent avec eux, d'où le nom "UX"..

Une autre chose importante à comprendre lorsque vous commencez à utiliser Fuse est qu’il ne s’agit pas d’une plate-forme basée sur un navigateur comme Cordova. Ainsi, même si cela vous permet d'utiliser du code JavaScript, toutes les fonctionnalités JavaScript disponibles dans un environnement de navigateur ne fonctionnent pas.. 

Fuse fournit une collection décente de polyfill qui vous permet d'effectuer des tâches telles que l'exécution de requêtes AJAX ou la définition d'un intervalle pour l'exécution d'un morceau de code. Autre que cela, vous êtes limité aux fonctionnalités JavaScript de base.

Avantages

  • Multiplate-forme: vous permet de créer des applications qui fonctionnent sur les appareils Android et iOS.
  • Performance native: UX Markup est compilé en code natif, raison pour laquelle les performances sont comparables à celles du processus natif (sinon identiques). Les différents effets et animations sont accélérés par OpenGL, ce qui permet une expérience utilisateur de premier ordre..
  • Code déclaratif: les animations, les effets et les transitions sont déclarés via UX Markup. Ainsi, la mise à l'échelle d'un bouton lorsque vous cliquez dessus est gérée uniquement via le balisage UX. Cela vous permet de concentrer votre code JavaScript sur des tâches telles que les requêtes aux API, l'exécution de calculs et l'écriture de la logique métier..
  • Adapté aux développeurs et aux concepteurs: Fuse utilise des technologies connues et appréciées des développeurs Web: JavaScript pour les tâches de traitement et un langage de type XML pour UX. Le balisage UX qu'ils utilisent pour créer l'interface utilisateur est très simple, ce qui le rend facile à utiliser, même pour les concepteurs..
  • Bonne documentation: les différentes fonctionnalités et API sont bien documentées. Ils ont également une collection d’exemples, même s’il présente surtout leurs expériences UX.. 
  • Extensible: Fuse utilise un langage appelé Uno pour étendre les fonctionnalités natives. Cela signifie que vous pouvez implémenter vous-même des fonctionnalités personnalisées si vous avez besoin d'une fonctionnalité native qui n'est pas exposée via les API JavaScript de Fuse..

Les inconvénients

  • Jeune communauté: comparée à React Native, la communauté de Fuse est encore jeune et elle n’est pas vraiment active. Ils ont une chaîne Slack et un forum. Ils ont aussi une page pour les paquets de la communauté, mais quand vous regardez le dépôt de GitHub, il n'y a pas beaucoup d'activité. Il y a aussi un manque d'articles de blog et de tutoriels sur Fuse.
  • Pas de support pour les frameworks JavaScript existants: Fuse prend uniquement en charge le JavaScript vanille. Donc, si vous venez de Vue, React ou Angular et que vous souhaitez utiliser vos compétences sur la plate-forme Fuse, ce n'est malheureusement pas possible..
  • Pas de support Linux: Vous ne pouvez pas développer d'applications avec Fuse si vous n'êtes ni sous Windows ni sous MacOS.. 
  • Aucun support NPM et système de package: vous ne pouvez pas utiliser NPM pour installer et utiliser les bibliothèques JavaScript existantes. Bien que quelques bibliothèques JavaScript fonctionnent, une plate-forme n’est pas complète sans un système de paquet permettant aux développeurs d’installer des bibliothèques existantes qui implémentent une fonctionnalité spécifique.! 
  • Pas de support natif ES6: Fuse prend uniquement en charge ECMAScript 5.1 pour l'écriture de code JavaScript. Cependant, vous pouvez utiliser un transpiler tel que Babel pour transcrire votre code ES6 en ES5..

Comment fonctionne le fusible?

Sous le capot, Fuse traduit le balisage UX en code C ++ natif via le compilateur Uno. Uno est le langage semblable à C # qui a été utilisé pour écrire toutes les classes de base de Fuse. Ainsi, le balisage UX que vous avez écrit, ainsi que le framework Fuse, sont compilés en C ++. Après cela, les outils de la plateforme native (Android Studio ou Xcode) prennent ce code C ++ et compilent l’application native..

Quant au code JavaScript, il est interprété par une machine virtuelle JavaScript au moment de l'exécution. Cela signifie que l'interface utilisateur et la logique métier sont indépendantes l'une de l'autre.. 

Comment les fusibles se comparent-ils pour réagir de manière native?

Aucun article d'introduction sur une nouvelle plate-forme ne serait complet sans une comparaison avec une plate-forme existante. Une plate-forme comparable à Fuse est React Native. Nous allons donc comparer ces deux plates-formes en fonction des critères suivants:

  • caractéristiques de la plate-forme
  • performance
  • code
  • extensibilité

Notez que je ne ferai que comparer les fonctionnalités gratuites de Fuse car React Native est une plate-forme gratuite..

Caractéristiques de la plateforme

Fuse et React Native sont dotés des fonctionnalités suivantes:

  • Rechargement à chaud: les modifications apportées au code sont automatiquement reflétées dans l'aperçu de l'application. Cependant, si vous comparez la rapidité avec laquelle les mises à jour de l'interface utilisateur se produisent, Fuse est clairement le gagnant. Leur rechargement à chaud est presque instantané.
  • API JavaScript pour utiliser les fonctionnalités natives: Fuse et React Native vous permettent à la fois d'accéder aux fonctionnalités du périphérique natif telles que la caméra, la géolocalisation et les notifications push via une API JavaScript. Toutefois, si vous comparez la documentation, il est clair que React Native dispose de davantage d’API..

Voici les fonctionnalités disponibles uniquement pour Fuse:

  • Prévisualisation sur plusieurs appareils: Cela permet aux développeurs et aux concepteurs de prévisualiser l'application sur plusieurs appareils avec différents facteurs de forme. La seule exigence est que la machine de développement se trouve sur le même réseau sans fil que les périphériques. Ceci est très utile car ils verront immédiatement si quelque chose ne va pas bien dans une fenêtre spécifique.
  • Aperçu du bureau: Cela permet de prévisualiser les applications sur le bureau. Notez que cela aura très peu d’impact sur les performances de votre ordinateur. C'est parce que ce n'est pas réellement un émulateur de périphérique. L'aperçu du bureau vous permet également de prévisualiser l'application sur plusieurs fenêtres.. 
  • Aperçu de l'application: si vous voulez un moyen rapide de prévisualiser votre application, une application cliente pour Android et iOS est également disponible. Cela vous permet de numériser un code QR, qui ouvre ensuite l'application sur l'appareil. Vous pouvez le faire pour autant d'appareils que vous le souhaitez. Les modifications apportées au code source sont automatiquement répercutées sur chacun de ces appareils.. 

Le seul inconvénient de l'application de prévisualisation, par opposition à la prévisualisation personnalisée (le moyen par défaut de prévisualiser les applications sur un appareil), est que le code Uno personnalisé et les packages tiers ne fonctionnent pas. La géolocalisation, les notifications push et les notifications locales ne fonctionneront pas non plus. Il vaut mieux utiliser l'aperçu personnalisé dans ces cas. 

Performance

Les performances de Fuse sont comparables à celles d'un logiciel natif, car UX Markup est compilé en interface utilisateur native pour la plate-forme spécifique. Et comme toutes les animations, effets et transitions sont définis dans le balisage lui-même, celui-ci sait déjà quoi faire lorsque, par exemple, un bouton est enfoncé. Comme mentionné précédemment, JavaScript s'exécute sur un thread distinct et n'affectera en rien les performances de l'interface utilisateur. De plus, Fuse utilise OpenGL ES, qui fournit des performances graphiques accélérées par le matériel. Cela signifie que différentes animations et effets peuvent être utilisés en même temps sans affecter considérablement les performances de l'interface utilisateur. Cela fait de Fuse une plate-forme très appropriée pour développer des jeux mobiles.

De son côté, React Native utilise un module de pont pour chaque plate-forme. Ce module sert de connexion entre les API JavaScript (y compris les composants de l'interface utilisateur) et les fonctionnalités natives afin qu'elles puissent communiquer entre elles. Cela rend React Native moins performant que Fuse en raison des coûts de communication entre les composants natifs et les composants d'interface utilisateur correspondants de React Native.. 

Code

Fuse et React Native proposent tous deux un langage de balisage comme élément de base de l'interface utilisateur. Cependant, il suffit de comparer les docs de Fuse et React Native pour constater que React Native comporte davantage de composants qui représentent leurs homologues natifs..

UX Markup de Fuse vous permet de décrire les animations d'un composant chaque fois qu'un utilisateur interagit avec lui. Par exemple, voici comment créer un bouton qui devient trois fois plus grand que sa taille initiale lorsqu’il est enfoncé. Fuse prend en charge la durée de la transition si vous ne la spécifiez pas:

    

De son côté, React Native s'appuie sur JavaScript pour presque tout. Dans le code ci-dessous, le Saisie de texte composant repose sur texte être initialisé dans l'état. Il le met ensuite à jour chaque fois que le texte saisi par l'utilisateur change: 

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

Voici comment le texte par défaut d'un champ de texte est fourni:

constructeur (accessoires) super (accessoires); this.state = text: 'Texte par défaut'; 

Entre les deux, la manière dont Fuse sépare la logique commerciale de la gestion de l'interface utilisateur est favorable en termes de collaboration entre un développeur et un concepteur. Le balisage UX est assez simple à comprendre pour que le concepteur puisse travailler dessus pendant que le développeur gère la logique métier.. 

Extensibilité

Fuse vous permet d'utiliser le même langage qu'ils utilisent pour toutes leurs classes de base afin d'étendre les fonctionnalités natives. Toutefois, cela nécessite que vous sachiez comment utiliser les API natives sous Android et iOS. À partir de Fuse's Uno, vous pouvez utiliser du code étranger pour implémenter des fonctionnalités natives. Actuellement, Uno ne prend en charge que Objective-C pour iOS et Java pour Android. La classe résultante est ensuite exposée afin que vous puissiez l'appeler à partir de JavaScript..

De même, React Native possède un module de pont correspondant pour iOS et Android. Ce module de pont sert de pont entre les fonctionnalités natives et JavaScript. Tout comme Fuse, vous devez avoir une connaissance pratique d’Objective-C ou de Java..

Les deux plates-formes vous permettent également d'étendre les composants de l'interface utilisateur native pour chacune de vos plates-formes cibles. Que faire si, par exemple, vous souhaitez implémenter un composant d'interface utilisateur correspondant pour le contrôle d'info-bulle natif sous Android? Vous pouvez le faire sur Fuse et React Native.

Est-ce que le fusible en vaut la peine?

Si vous me demandez mon opinion, je dirais que cela dépend de votre cas d'utilisation spécifique. Fuse est définitivement prêt pour la production. Son principal avantage est sa performance et la rapidité avec laquelle vous pouvez passer d’une idée à un prototype fonctionnel. Les applications créées avec Fuse sont très performantes et facilitent également la collaboration entre développeurs et concepteurs..

Son principal inconvénient est sa communauté. Fuse s’engage clairement pour l’open source avec la publication des bibliothèques qui lui permettent de fonctionner sous le capot. Cependant, ils restent une petite entreprise (comparé à Facebook, au moins). Cela signifie qu'ils doivent gagner de l'argent d'une manière ou d'une autre. C'est pourquoi ils ont des régimes professionnels rémunérés qui sont davantage axés sur les équipes et l'entreprise. On peut donc supposer que la plupart de leurs efforts seront consacrés au développement de ces outils payants. Cela laisse l'effort open-source un citoyen de seconde classe. 

Si vous travaillez pour une entreprise qui développe des applications quotidiennement, Fuse est une bonne option. Mais si vous êtes un développeur indépendant comme moi, nous sommes surtout obligés d'utiliser le plan gratuit. C'est suffisant pour la plupart des cas d'utilisation, mais si vous avez besoin de fonctionnalités natives personnalisées, vous devrez les implémenter vous-même..

En fin de compte, tout dépend de votre cas d'utilisation. Si vous pensez que votre application n'a pas besoin de travailler avec tout un ensemble de services, d'outils et d'API natives, optez pour Fuse. Sinon, ne le faites pas. Non, sauf si vous avez beaucoup de temps à perdre pour développer des modules natifs personnalisés!

Conclusion

Vous devez maintenant avoir une bonne idée de ce qu'est Fuse, de son fonctionnement, de ses avantages et de ses inconvénients, et de la pertinence de l'essayer comme alternative aux infrastructures de développement mobile plus populaires. Dans la deuxième partie de cette série, nous verrons comment développer une application avec Fuse.