Je vais créer une application mobile native (ce qui signifie; pas dans le navigateur). Étant donné que je suis développeur Web, j'ai du mal à décider si je dois ou non essayer Phonegap ou simplement créer une application native dans Java ou objective-c.
Les exigences de l'application sont simples. Localisation GPS/wifi, intégration Facebook et je suppose que j'aurai besoin d'une base de données pour gérer certaines des relations Facebook-amis spécifiques à l'application. Comme les meilleurs scores dans un jeu, par exemple - des trucs comme ça.
Je suis développeur Web, et je ne sais pas non plus Java ou objective-c, pour l'instant. Je n'ai jamais utilisé Phonegap auparavant, donc je ne sais pas s'il est capable de répondre mes exigences.
Ma question est donc la suivante; Puis-je utiliser Phonegap pour mon application ou dois-je plonger dans une nouvelle langue?
Une version plus grande de cet article peut également être trouvée ICI , pour être transparent il est mon blog personnel.
Applications hybrides:
Pro:
Inconvénients:
Applications natives:
Pro:
Inconvénients:
Dans votre cas, si vous avez de bonnes compétences en développement/conception Web et/ou si vous avez un bon concepteur, vous devez choisir une application hybride. Ne devenez natif que si cette application va être complexe. Tout ce que vous voulez peut être fait avec une application hybride. Et vous trouverez une communauté formidable et solidaire.
Ce que je n'ai pas mentionné précédemment, vous devez être particulièrement prudent ici. Même si vous êtes un développeur chevronné, vous trouverez de nombreux problèmes que vous ne pouvez pas résoudre. Le développement hybride ne doit pas être confondu avec un développement Web de base.
Chaque plate-forme mobile a son propre ensemble de problèmes, sans oublier que les téléphones mobiles se comportent différemment en fonction d'un appareil. Si possible, créez toujours une application qui fonctionne sur des appareils plus lents car l'application native fonctionnera avec succès sur presque tous les appareils.
Il y a une dernière chose, lors de la création d'applications hybrides, le développement d'applications vous prendra environ 30% à 50% de votre temps, le reste va au débogage et à l'apprentissage de plates-formes spécifiques. Croyez-moi, même après plusieurs années de développement mobile, je suis parfois confronté à des problèmes que je ne peux pas résoudre seul ou assez rapidement.
Soyez donc prudent lorsque vous choisissez un framework mobile, choisissez 2-3 et passez plusieurs jours à les lire.
Voici quelques liens pour vous aider à décider:
Tutoriel PhoneGap + jQuery Mobile 1.4 - Ceci est un tutoriel étape par étape pour PhoneGap et la dernière version de jQuery Mobile
Tutoriel PhoneGap + jQuery Mobile 1.4 - version MacOS - Ceci est un tutoriel étape par étape pour le déploiement de PhoneGap sur MacOS. La partie jQuery Mobile est traitée dans un article précédent, inutile de répéter les choses.
jQuery Mobile vs Sencha Touch - Comparaison jQuery Mobile Sencha Touch
jQuery Mobile vs Kendo UI - Comparaison jQuery Mobile Kendo UI
7 frameworks mobiles HTML5 les plus connus - Le nom dit tout
7 frameworks mobiles HTML5 moins connus - Le nom dit tout
si votre application n'a pas d'effets d'animation et simple, je préfère créer dans un site Web (Phonegap) cz à moins de temps, nous pouvons lancer dans plusieurs types d'OS mobiles. si votre application contient plus d'effets d'interface utilisateur et d'animation, il est préférable de choisir natif.
même si vous développez en vue Web (Phonegap), vous devez apprendre quelques étapes de base dans Android et iOS
Comment Phonegap fonctionne dans les appareils
Ios Les animations et le chargement des vues dans ios webview sont échoués et bons, les effets d'animation peuvent observer clairement
Android
Nous devons tenir compte de la version de l'appareil et de la société de l'appareil pour Android lors de l'exécution du code html. Certains appareils à haute configuration dans Android offrent un affichage d'animation plus clair et plus efficace, mais certains appareils (principalement ancienne version et certains appareils de l'entreprise) ne peuvent pas donner de bons effets d'animation, l'effet de rendu varie d'un appareil à l'autre dans Android,
À mon humble avis avec Phonegap, vous pouvez simplement développer des applications simples, rien de plus. La documentation n'est pas suffisante et, comme d'autres l'ont dit, vous passerez beaucoup plus de temps à corriger des bugs et à trouver des plugins qu'à créer votre application. Je ferais l'effort d'apprendre Android ou iOS ou autre chose, regardez-le comme un investissement de votre temps. (Oui, mon commentaire est un peu biaisé).
La dernière fois que je l'ai examiné, PhoneGap était entièrement en html, css et javascript. Ainsi, vous vous sentirez peut-être comme chez vous. PhoneGap peut gérer la localisation GPS, voir cet article de la documentation de PhoneGap. La décision de ramasser ou non l'Objectif C dépendra de la rapidité avec laquelle vous récupérez de nouvelles langues, car c'est un peu différent du Web. développement.
Cela dépend totalement de vos besoins
Après avoir publié ma première application plusieurs mois (Android natif, base de données, application de connexion reposante), j'ai décidé de réécrire mon application en utilisant phonegap (car je veux cloner l'application sur iOS, donc au lieu de le faire dans ObjC, pourquoi pas javascript ?)
Quand sur Android, cela m'a coûté, un Java, 3 semaines pour tout apprendre et tout coder à partir de zéro. Me frapper la tête au mur plusieurs fois pour savoir comment synchroniser ListAdapter avec le service Restful depuis mon serveur, comment thématiser l'application (assez difficile à mon avis, surtout en ce qui concerne les effets spéciaux comme transparent, border, ...), et aussi, comment structurer efficacement votre base de code (si vous êtes familier avec Java , vous constaterez que toutes les classes sont très couplées les unes aux autres, car c'est ce que la plupart des tutoriels écrivent)
Sur Phonegap, tout se fait en 1 semaine. Css, html, avec onsenui
et angular
rendent le développement de l'interface graphique comme le travail d'un élève de 1ère année et le thème n'est qu'un jeu d'enfant. Je n'ai pas besoin de l'exécuter sur le vrai appareil, il suffit d'utiliser le navigateur pendant le développement, le changement de code et le rafraîchissement suffisent. Angular
fournit une liaison bidirectionnelle avec le DOM, ce qui crée une énorme impression lors de la collecte et de l'affichage des données. Par exemple:
<ul ng-each="for sentence in sentences" >
<li>{{ sentence.title }} </li>
</ul>
Lorsque la variable sentences
est modifiée (récupérée du serveur), le DOM est automatiquement modifié également. Cependant, javascript n'est que javascript. Je me suis retrouvé à plusieurs reprises en difficulté lors du débogage de l'application, en particulier lors de l'exécution des fonctions MapReduce avec PouchDB (grosse erreur, je dois revenir à cordova-sqlite-plugin
ce soir) et la plupart du temps, je dois lire le journal pour comprendre le problème (les outils de Chrome et Firebug ne peuvent pas détecter le point d'arrêt). De plus, il est difficile de restructurer votre application (javascript, encore), donc si vous n'organisez pas soigneusement votre base de code au premier signe, vous risquez de vous retrouver avec un désordre (et le débogage est une vraie douleur, encore une fois). PhoneGap est également basé sur le Web, donc parfois, vous entendrez que "parce que sur cette plate-forme, il ne prend pas en charge ce bla bla bla" (par exemple, localStorage
) et vous devez le défendre si vous ne trouvez aucun bon plugin.
Conclusion À l'exception de la limitation du stockage sur le Web, PhoneGap fonctionne assez bien avec l'application GUI simple basée sur la base de données (et la plupart des applications basées sur la base de données ont actuellement une interface graphique simple de toute façon). Si vous allez développer ce genre d'application, restez-y
vérifiez en utilisant ionic , soutenu par angular.js pour compenser certains des inconvénients mentionnés dans la réponse acceptée. Tutoriel pour lancer une application d'annuaire d'employés: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/
@Gajotres a écrit une excellente réponse, mais les performances des applications hybrides ont beaucoup progressé depuis 2012. J'ai répondu à une question connexe qui couvre la différence entre le développement d'applications hybrides et natives en 2017.
La morale de l'histoire est que le développement d'applications hybrides s'est considérablement amélioré au cours des dernières années, mais il ne peut toujours pas correspondre au natif pour certains cas d'utilisation.
Avec des outils comme Ionic (première sortie en 201 ) et React Native (première sortie en 2015 ) ), il est plus facile que jamais de créer des applications hybrides avec des composants de type natif. Les applications hybrides sont désormais plus rapides, moins boguées et capables d'interagir plus profondément avec l'interface utilisateur native.
Le seuil de performances des applications hybrides est considérablement plus élevé qu'il y a seulement quelques années, mais il y a encore un point où vous devrez peut-être développer votre application dans une langue maternelle.
Oui, le sentiment général est que les applications hybrides sont inférieures aux applications natives. Bien que cela puisse être frustrant pour les développeurs plus familiers avec les technologies Web, cela vient pour une bonne raison:
- Incapacité d'interagir avec les composants natifs : bien que des plugins tels que
cordova-plugin-statusbar
existe, il existe des limitations d'interaction et de manipulation des composants natifs à l'aide des technologies Web. Un problème important (et frustrant) que j'ai personnellement rencontré est l'impossibilité d'avoir une entrée en haut de leur clavier pendant que le clavier s'anime. Cela ressemble à une non-publication jusqu'à ce que vous regardiez une application où c'est une fonctionnalité essentielle telle que dans une application de chat comme Slack.- Retard de 300 ms : Bien que les navigateurs modernes commencent à éliminer progressivement , la fraction de seconde de retard présente sur les applications hybrides fait l'application se sent lente et non native. Ce problème devient moins important car de plus en plus d'utilisateurs adoptent des solutions de contournement telles que FastClick.js et certains cadres tels que Ionic l'éliminent par défaut.
- Les ennemis ont raison (en quelque sorte) : Bien que le développement d'applications hybrides ait parcouru un long chemin, il y a encore des problèmes mineurs et des fonctions laggy qui ne sont tout simplement pas présents dans une application native. Les transitions d'écran, le changement d'application et la durée de vie de la batterie sont toujours des domaines communs pour l'apparition des bogues et le seront probablement pendant un certain temps, même s'ils commencent à devenir de moins en moins visibles.
- Il existe d'excellentes solutions natives : Avec les langages plus récents comme Apple Swift , il devient plus facile de coder dans une langue native. Cela étant dit, des outils tels que React Native tombent dans une zone grise entre Native et Hybrid en permettant aux développeurs de coder dans des technologies conviviales telles que JavaScript mais de compiler en code natif.
La morale de l'histoire est que cela dépend vraiment de ce qui est important pour votre cas d'utilisation spécifique. Les applications hybrides sont devenues une option viable et ne sont plus un spectacle secondaire embarrassant. À l'inverse, il existe encore des aspects mineurs d'interaction avec l'UX native qui ne sont pas encore possibles, sauf avec une application native.
Dans l'ensemble, je recommande de cartographier votre projet et de déterminer si votre application a besoin des avantages d'une application native. Avec des outils tels que l'application Ionic View , il est facile de rassembler une maquette de base de votre application et de tester sur un appareil réel si une application hybride fonctionnera pour vous.
L'une des grandes options négligées ici est le développement avec Xamarin.
Bien qu'il n'aide pas à utiliser les compétences de développeur Web d'OP, il a de nombreux avantages par rapport à PhoneGap et presque aucun inconvénient.
Par conséquent, Xamarin est une option très solide pour le développement multiplateforme de nos jours.
Je trouve également un bon article ici http://www.comentum.com/phonegap-vs-native-app-development.html , il compare ces deux façons dans différentes catégories.
Le résumé est comme ci-dessous:
Il existe également des stéroïdes AppGyver qui unissent très bien PhoneGap et Native UI.
Avec les stéroïdes, vous pouvez ajouter des éléments tels que des onglets natifs, une barre de navigation native, des animations et des transitions natives, des fenêtres modales natives, un tiroir/panneau natif (menu latéral Facebook), etc. à votre application PhoneGap. Fondamentalement, partout où CSS + JS ne le coupe pas, les stéroïdes atteignent la couche native pour effectuer l'action.
De plus, avec les stéroïdes, vous pouvez (même si vous n'êtes pas obligé) utiliser une architecture de plusieurs pages (plusieurs vues Web) plutôt qu'une seule. Avec les applications d'une seule page, toutes les choses comme les transitions ne sont que des solutions de contournement CSS, et comme Mani l'a dit, même les tablettes et les téléphones modernes ne sont pas assez rapides pour les rendre fluides. C'est toujours évident quand il s'agit d'une application PhoneGap, en particulier lorsque vous avez un tas de processus en cours, ou si vous faites défiler car les processus JS sont entravés (corrigés dans iOS 8).
L'utilisation de l'architecture multi-pages signifie que vous obtenez des performances 100% natives (car ces parties sont natives). Et contrairement à PhoneGap, vous obtiendrez un comportement d'interface utilisateur cohérent et un débogage plus facile (avec une application d'une seule page, il est souvent difficile de recréer un état particulier dans votre application). Le multi-page facilite considérablement le développement et la maintenance de vos applications, car votre base de code reste plus propre.
Vérifiez la démo: http://youtu.be/oXWwDMdoTCk?t=20m17s