Je suis récemment tombé sur Phonegap. Avoir quelqu'un d'entre vous l'ont essayé. C'est un outil incroyable qui prétend que les développeurs peuvent utiliser le HTML 5 basée cadre comme le Sencha touch et Jquery en même temps avoir accès à des fonctionnalités natives du téléphone. Le code est portable à partir de Android à l'Iphone avec un certain effort. Avant de me plonger dedans je veux savoir quel est le forum de l'expérience avec Phonegap. Quels sont les points de douleur et est-il vraiment évolutive pour les applications d'entreprise au niveau de développement.
Réponses
Trop de publicités?J'ai construit un couple d'applications à l'aide de PhoneGap, et pour ce qu'elle offre, c'est génial. Il ya un couple de notes rapides, je tiens à souligner, ce qui pourrait vous aider.
Disable device-based features you're not using
L'accéléromètre, la géolocalisation fonctionnalités sont par défaut activée. Si vous ne l'utilisez pas, j'ai éteint, que votre application se chargera plus vite (initialiser) et d'exécuter plus lisse.
onDeviceReady
- C'est la méthode qui est appelée une fois phonegap est chargé et prêt. $(document).prêt ou ce que vous êtes habitué, ne s'applique pas ici, sauf si vous êtes seulement à faire l'interface/hard-codé en HTML choses. Si vous êtes en interaction avec l'iPhone fonctionnalités, comme la Géolocalisation, vous devrez faire tout ce que après onDeviceReady a été appelé.
Pick a UI/library
Il y a une tonne d'options pour l'interface/les bibliothèques, jquery mobile, sencha touch, jqtouch, etc.., Qui offrent une approche unique, et de fonctionnalités. Faire de la recherche et de l'utiliser, mais éviter de combiner. Vous pouvez lire sur certains plus d'options, d'outils ici: http://www.phonegap.com/tool (lien mis à jour)
Also, more on just mobile development in general, with PhoneGap
Si vous êtes à la recherche pour créer des applications, qui sont distribués par le biais de l'Android market et App Store iPhone, je le ferais lire à travers leurs listes exhaustives pour des lignes directrices sur la façon de développer votre application. Par exemple, dans les outils lien ci-dessus, il est un "outil/plugin" appelée Facile APNS - ce qui est utile pour Android - et techniquement faisable sur l'iPhone, il viole l'accord de développement, car il est dit que vous devez utiliser la Pomme de notification de réseau, etc.. C'est juste un exemple, mais la lecture sur ce genre de choses va vous faire économiser beaucoup de maux de tête, si c'est votre objectif final.
Dans l'ensemble, c'est très léger pour les applications, surtout si vous venez d'un développement web d'arrière-plan. LocalStorage, Géolocalisation, etc.. fonctionne vraiment bien. J'espère que cela vous aide un peu... et se sentir à poser des questions.
Édition Supplémentaire:
Je pense vraiment que cela revient à ce que vous voulez faire, et ce que vous savez comment le faire. Matt a souligné que le développement d'applications natives pour iOS est mieux, etc.. Ouais, si vous avez le temps et les connaissances pour apprendre que - bien sûr, natif sera mieux. Mais PhoneGap est faite pour les développeurs web qui peuvent prendre leurs compétences et de créer des applications. Aussi, PhoneGap permet de construire rapidement des applications pour iOS, Android, Symbian, Palm, Blackberry. Avec des ajustements mineurs à votre base de code pour chaque.
Voici toutes les meilleures Performances guides que j'ai lu pour PhoneGap... il y a beaucoup de choses à se méfier de vous garantir solide, des performances stables... mais vous pouvez prendre tout cela en seulement une soirée de lecture.
Voici les meilleurs pépites:
PhoneGap/Web Mobile Astuces Pour Améliorer Les Performances
- Comment Diary.com l'augmentation de la performance de leur PhoneGap une application qui s'exécute Sencha: http://www.phonegap.com/2011/06/21/building-the-diary-com-ios-app-using-pg-sencha-touch/
- http://floatlearning.com/2011/03/developing-better-phonegap-apps/
- http://jslint.com/ - pour déboguer votre code javascript
- http://zeptojs.com/ et http://xuijs.com/ - minimal d'autres cadres de jquery et de jqtouch
- Désactiver l'accéléromètre et l'emplacement http://blogs.nitobi.com/jesse/2009/10/28/running-jqtouch-in-phonegap/
- set "EnableAcceleration" false dans PhoneGap.plist
- set "rotation automatique" à false dans PhoneGap.plist
- http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/
- http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone
- Démo: http://cubiq.org/dropbox/clickdelay.html
- FastClick v évènements touchstart: http://groups.google.com/group/phonegap/browse_thread/thread/f5f5c78e26513821?pli=1
http://forum.jquery.com/topic/ontouch-instead-of-onclick-event
http://wiki.phonegap.com/w/page/16494809/Performance-tips-for-device/
- http://www.developer.nokia.com/Community/Wiki/JavaScript_Performance_Best_Practices
- http://evolvingwe.com/building-an-iphone-app-part-3-7-dev-tips/
- http://evolvingwe.com/upgrading-to-phonegap1-0/
-
VIDÉO de la Performance des Conseils pour le Sencha Touch: http://vimeo.com/17882927
- Il couvre des caractéristiques de performance dans le Sencha, qui sont de grands principes, nous pouvons présenter une nouvelle demande. On peut même être en mesure de couper code de certains morceaux de Sencha présenter une nouvelle demande pour Skej.
- Il déclare que nous DEVONS détruire tout ce qui n'est pas visible sur le DOM. Et que le DOM doit être maintenu aussi bas que possible et en tout temps, avec aussi peu d'auditeurs possible. (I. e attacher un écouteur à la société mère élément d'une liste, plutôt que pour chaque élément de la liste.)
- Il a également pratique CSS3 conseils pour m'inscrire... en gros, ne pas utiliser de nombreuses nouvelles transitions et les ombres/coins ronds, car actuellement l'utilisation de l'UC, et pas encore GPU.
Événement Délégation dans le Sencha Touch: Comment concevoir des listes avec un seul écouteur, et pas un seul sur chaque ligne. http://www.sencha.com/blog/event-delegation-in-sencha-touch/
- L'optimisation des DOM Utilisation de la Mémoire dans le Sencha Touch: Glissement de l'une à un panneau Détails et de tuer la liste, et puis en faisant glisser à partir de Détails à une Liste et de tuer le panneau détails. En minimisant les éléments sur votre écran, votre DOM. http://www.sencha.com/blog/sencha-touch-optimizing-memory-usage/
- DÉTRUIRE TOUT CE QUI N'EST PAS VISIBLE SUR VOTRE DOM!
- Utiliser les Animations CSS au lieu de jQuery
- http://nyroo.com/l/B7UN5c
-
http://www.ferretarmy.com/css-animation-examples/
- Attention... ce sont délicates quand ils ne sont pas d'exploiter le GPU, et ralentir le CPU.
Permettant À De Nouvelles Fonctions
- Activer l'Affichage de la Rétine: http://evolvingwe.com/create-retina-display-images-in-mobile-web-themes-and-phonegap-apps/
- Doigt: http://www.codesta.com/blog/2011/5/23/sencha-touchphonegap-tips-and-tricks.html
- Désactiver l'accéléromètre et le lieu: http://iamcam.wordpress.com/2009/10/29/phonegap-up-to-speed/
- Coupe de jQuery et de la Main-code: http://cubiq.org/do-you-really-need-jquery-for-mobile-dev
- Affichage de la Liste de Contacts dans le navigateur Safari Mobile: http://cubiq.org/contact-list-on-webkit-for-iphone
- iScroll4: Créer un en-tête, faites défiler jusqu'à l'intérieur d'un div de taille fixe, de pincement et de zoom, de tirer vers le haut/vers le bas d'actualisation. http://cubiq.org/iscroll-4 (Comprend des conseils sur la bande de caoutchouc effet.)
- PhoneGap du dépôt GitHub: Comprend des exemples intéressants comme DatePicker, SMSComposer, ApplicationPreferences, le Splashscreen, NetworkActivityIndicator... https://github.com/phonegap/phonegap-plugins
L'Architecture
L'architecture de votre Application en Ext JS 4: http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2
Avant d'exprimer mon opinion de Phonegap, j'ai besoin d'émettre un petit avertissement disant que je suis, en aucun cas, un développeur web. Pour moi, écrire du code JavaScript et CSS, c'est comme arracher des dents. Cela dit, je n'aime pas Phonegap.
Il y a quelques très attrayant aspects du cadre, surtout le "Write-Once-Run-Anywere" appel et le "je-Ne-Avoir-Pour-Apprendre-Objective-C?" appel. Le cadre peut même vous donner accès à certaines fonctionnalités du matériel comme l'accéléromètre. Tous ces éléments sont valables, dans une certaine mesure.
Cela dit, aucune des grandes applications iOS sont construits à l'aide de toute sorte de croix le cadre de la plateforme. Il y en a tellement subtile et élégante de l'INTERFACE utilisateur, les interactions qui sont gérées par le natif UIKit contrôles que beaucoup d'utilisateurs et de développeurs prennent pour acquis jusqu'à ce qu'ils sont manquants, comme la flopée d'une incroyable vue détaillée des courbes d'animation et de défilement des rebonds qui n'existent pas dans le web-la vue de l'INTERFACE utilisateur. Vous pourrait peiner à les reproduire parfaitement, mais pour que l'investissement en temps, pourquoi ne pas simplement aller indigènes?
Un deuxième point à noter est que le soutien de la communauté pour Phonegap-construit des applications iOS est considérablement plus petite que nativement des applications développées. Si vous êtes l'un de s'appuyer sur la communauté au cours de projets, ce qui devrait également vous donner une pause.
En fin de compte, il revient à la qualité de l'expérience que vous souhaitez offrir. La limite supérieure est plus faible avec Phonegap. Si vous êtes prêt à accepter une moins-que-excellente expérience utilisateur en échange de la réduction du temps de développement et la portabilité accrue, que c'est un très viable cadre.
En tant que sous-texte pour tous ceux qui sont intéressés, Marco Arment et Dan Benjamin récemment discuté de ce sujet. Vous pouvez l'écouter ici.
La procédure d’installation implique un certain nombre de paquets (Java, Apache Ant, Ruby, iOS SDK, SDK Android et PhoneGap lui-même), qui tous doivent être correctement installé et configuré. Cela peut être un effort important. Pour être honnête, ils ont ce qu’on appelle PhoneGap Build en version bêta qui devrait faire c’est beaucoup plus facile.
Nous l’utilisons avec NS Basic/App Studio pour produire des applications qui sont admissibles à l’app store.
si vous n'êtes pas de faire un jeu, ni un widget, tout simplement beau d'application phonegap est votre choix.
Mais vous devez prendre soin de vos JS, évitez de faire quelque chose en JS par exemple, si vous voulez faire une animation éviter l'établissement d'une minuterie avec de petits intervalles (par exemple. 100 ms), éviter de jquery et autres animations. Par exemple, au lieu de l'animation de fondu par la définition d'une courte période de minuterie de la diminution de l'opacité à chaque point, étape par étape (ce est comment jquery fondu de travail), vous devez utiliser css3 transitions à partir de l'opacité de 1 à opacité de 0.
Mon conseil est d'aller avec quelque chose comme zeptojs.com après tout, phonegap ne fonctionne pas ie6 :-)
De vérifier certains tutoriel sur la façon de faire de votre JS plus de lumière