Disable device-based features you're not using 默认情况下,加速计,地理定位功能已打开 . 如果您不使用它们,我会关闭它们,因为您的应用程序将加载更快(初始化)并运行更顺畅 .
onDeviceReady - 这是's called once phonegap has loaded and is ready. $(document).ready or whatever you'习惯的方法,不仅仅是做接口/硬编码HTML的东西 . 如果您正在与iPhone功能(如GeoLocation)进行交互,则需要执行所有操作 after onDeviceReady .
Also, more on just mobile development in general, with PhoneGap 如果您正在寻找通过Android市场和iPhone App Store分发的应用程序,我会通过详尽的列表阅读有关如何开发应用程序的指南 . 例如,在上面的工具链接中,有一个名为Easy APNS的"tool/plugin" - 虽然这对Android很有用 - 并且在iPhone上技术上可行,但它违反了开发协议,因为它声明您必须使用Apple通知网络等 . 这只是一个例子,但如果那是你的最终目标,那么阅读这些东西将为你省去很多麻烦 .
7 回答
我使用PhoneGap构建了一些应用程序,并且它提供的功能非常棒 . 我想指出一些快速笔记,这可能会对你有所帮助 .
Disable device-based features you're not using 默认情况下,加速计,地理定位功能已打开 . 如果您不使用它们,我会关闭它们,因为您的应用程序将加载更快(初始化)并运行更顺畅 .
onDeviceReady - 这是's called once phonegap has loaded and is ready. $(document).ready or whatever you'习惯的方法,不仅仅是做接口/硬编码HTML的东西 . 如果您正在与iPhone功能(如GeoLocation)进行交互,则需要执行所有操作 after onDeviceReady .
Pick a UI/library 接口/库,jquery-mobile,sencha touch,jqtouch等有很多选项 . 这些选项都提供了独特的方法和功能集 . 做一些研究并使用一个,但避免结合 . 您可以在这里阅读更多选项和工具:http://www.phonegap.com/tool(链接已更新)
Also, more on just mobile development in general, with PhoneGap 如果您正在寻找通过Android市场和iPhone App Store分发的应用程序,我会通过详尽的列表阅读有关如何开发应用程序的指南 . 例如,在上面的工具链接中,有一个名为Easy APNS的"tool/plugin" - 虽然这对Android很有用 - 并且在iPhone上技术上可行,但它违反了开发协议,因为它声明您必须使用Apple通知网络等 . 这只是一个例子,但如果那是你的最终目标,那么阅读这些东西将为你省去很多麻烦 .
总而言之,它非常适合轻量级应用,特别是如果您来自Web开发背景 . LocalStorage,GeoLocation等工作得非常好 . 我希望这有点帮助...并且想提出问题 .
Additional Edit:
我真的认为这取决于你想做什么,以及你知道该怎么做 . Matt指出,为iOS开发本机应用程序更好,等等 . 是的,如果你有时间和知识来学习 - 当然本机会更好 . 但PhoneGap适用于可以利用现有技能并构建应用程序的Web开发人员 . 此外,PhoneGap允许您快速构建应用程序,适用于iOS,Android,Symbian,Palm,Blackberry . 对每个代码库进行微调 .
以下是我为PhoneGap阅读的所有最佳性能指南...有很多需要警惕,以确保您拥有稳定,稳定的性能......但是您可以在一天晚上的阅读中选择它 .
这是最好的掘金:
PhoneGap /移动网络性能提示
Diary.com如何提高运行Sencha的PhoneGap应用程序的性能: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/ - 调试你的javascript
http://zeptojs.com/和http://xuijs.com/ - jquery和jqtouch的最小替代框架
禁用加速度计和位置http://blogs.nitobi.com/jesse/2009/10/28/running-jqtouch-in-phonegap/
在PhoneGap.plist中将“EnableAcceleration”设置为false
在PhoneGap.plist中将"AutoRotate"设置为false
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
演示:http://cubiq.org/dropbox/clickdelay.html
FastClick v 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/
Sencha Touch的视频性能提示:http://vimeo.com/17882927
它涵盖了Sencha的性能特征,这是我们可以重新应用的重要原则 . 我们甚至可以从Sencha的某些部分中删除代码以重新申请Skej .
它声明我们必须销毁在DOM上看不到的任何东西 . 并且DOM必须始终保持尽可能小,尽可能少的听众 . (即将一个侦听器附加到列表的父项,而不是每个列表项 . )
它也有实用的CSS3技巧供我应用......基本上,不要使用许多新的过渡和阴影/圆角,因为当前使用的CPU,而不是GPU .
Sencha Touch中的
事件委派:如何使用单个侦听器设计列表,而不是每行都设置一个 . http://www.sencha.com/blog/event-delegation-in-sencha-touch/
优化DOM内存Sencha Touch中的用法:从List滑动到Details面板并终止列表,然后从Details滑动到List并终止详细信息面板 . 最小化屏幕上的元素,DOM . http://www.sencha.com/blog/sencha-touch-optimizing-memory-usage/
彻底破坏你的DOM上不可见的任何东西!
使用CSS动画而不是jQuery
http://nyroo.com/l/B7UN5c
http://www.ferretarmy.com/css-animation-examples/
小心......当他们不利用GPU并使CPU陷入困境时,这些都很棘手 .
启用新功能
启用Retina显示:http://evolvingwe.com/create-retina-display-images-in-mobile-web-themes-and-phonegap-apps/
滑动删除:http://www.codesta.com/blog/2011/5/23/sencha-touchphonegap-tips-and-tricks.html
禁用加速度计和位置:http://iamcam.wordpress.com/2009/10/29/phonegap-up-to-speed/
剪切jQuery和手动代码:http://cubiq.org/do-you-really-need-jquery-for-mobile-dev
在移动Safari中显示联系人列表:http://cubiq.org/contact-list-on-webkit-for-iphone
iScroll4:创建 Headers ,在固定大小的div内滚动,捏合和缩放,上拉/下拉刷新 . http://cubiq.org/iscroll-4(包括有关橡皮筋效果的提示 . )
PhoneGap的GitHub回购:包括有趣的例子,如DatePicker,SMSComposer,ApplicationPreferences,Splashscreen,NetworkActivityIndicator ...... https://github.com/phonegap/phonegap-plugins
架构
在Ext JS 4中构建您的应用程序:http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2
在表达我对Phonegap的看法之前,我需要发布一个免责声明,说我绝不是一个网络开发者 . 对我来说,编写JavaScript和CSS就像拔牙一样 . 那就是说,我不喜欢Phonegap .
这个框架有一些非常吸引人的方面,主要是“一次写入 - 运行 - 任何一个”的吸引力和“我不想学习 - 目标-C?”上诉 . 该框架甚至可以让您访问加速度计等一些硬件功能 . 所有这些在某种程度上都是有效的 .
也就是说,没有一个伟大的iOS应用程序是使用任何类型的跨平台框架构建的 . 本机UIKit控件为您处理了许多微妙而优雅的UI交互,许多用户和开发人员都会理所当然地将它们丢失,直到它们丢失为止,例如大量令人难以置信的详细视图动画曲线和不存在的滚动弹跳在基于Web视图的UI中 . 你可以努力完美地再现它们,但在那个时候投资,为什么不去土生土长?
需要注意的第二点是,Phonegap构建的iOS应用程序的支持社区比本机开发的应用程序要小得多 . 如果你是一个在项目期间依赖社区的人,这也应该让你停下来 .
最后,它归结为您想要提供的体验质量 . Phonegap的上限较低 . 如果您准备好接受不太优秀的用户体验以换取更少的开发时间和更高的可移植性,那么它就是一个非常可行的框架 .
作为任何感兴趣的人的潜台词,Marco Arment和Dan Benjamin最近讨论了这个话题 . 你可以听听它here .
安装过程涉及许多软件包(Java,Apache Ant,Ruby,iOS SDK,Android SDK和PhoneGap本身),这些软件包都必须正确安装和设置 . 这可能是一项重大努力 . 公平地说,他们有一个名为PhoneGap Build in beta的东西应该会让这更容易 .
我们将它与NS Basic / App Studio一起使用,以生成符合应用商店资格的应用 .
如果你不是制作游戏或小部件,只是简单漂亮的应用程序,那么phonegap是你的选择 .
但你应该小心你的JS,避免在JS中做任何事情,例如,如果你想做任何动画避免设置一个小间隔(例如100毫秒)的计时器,避免jquery和相似的动画 . 例如,通过设置短周期计时器逐步降低每个点的不透明度(这是jquery淡入淡出的工作方式)来代替动画淡化,您应该使用从不透明度1到不透明度0的css3过渡 .
我的建议是使用像zeptojs.com这样的东西,毕竟phonegap将无法运行ie6 :-)
查看一些有关如何使JS更轻松的教程
http://bcksp.blogspot.com/
如果您不需要HTML5和Phonegap提供的任何硬件功能或性能,封装的Web应用程序(以及对其他功能的一些有限访问权限)是一个很好的解决方案 .
许多企业部署大型Web应用程序 . Phonegap(或只是带有嵌入式内容的普通Web视图控件)将允许您脱机运行这些Web应用程序(当然,除了所需的任何在线数据) .
在多个不同设备之间部署时未提及的一个“痛苦”:设备越多,学习曲线越大 . 要使用PhoneGap部署到iOS设备,您需要在a上学习Xcode的基础知识苹果电脑 . 要部署到Android,您需要安装和学习Eclipse,Android SDK等 . 其他平台需要使用自己的SDK . 学习一些基本的Xcode,Javascript和Java可以帮助我理解错误和一般语法 .
“创建一次,随处部署”,省去了很多步骤!