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:
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.
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..
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:
Notez que je ne ferai que comparer les fonctionnalités gratuites de Fuse car React Native est une plate-forme gratuite..
Fuse et React Native sont dotés des fonctionnalités suivantes:
Voici les fonctionnalités disponibles uniquement pour Fuse:
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.
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..
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..
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.
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!
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.