使用Phonegap进行本地应用程序开发
我最近遇到了Phonegap 。 有没有人尝试过。 它是一个令人难以置信的工具,声称开发人员可以使用基于HTML 5的框架,如Sencha touch和Jquery,同时可以访问手机上的本地function。 此外,代码是从Android到iPhone的一些便携式移植。 在尝试使用之前,我想知道什么是Phonegap论坛的经验。 什么是难点,对于企业级应用程序开发来说是真正的可扩展性。
我已经使用PhoneGap构build了一些应用程序,而且它提供的function非常棒。 我想指出一些快速的说明,这可能会帮助你。
Disable device-based features you're not using
默认情况下,加速度计,地理定位function处于打开状态。 如果你不使用它们,我会closures它们,因为你的应用程序将加载更快(初始化)并运行更平滑。
onDeviceReady
– 这是phonegap加载并准备好后调用的方法。 $(document).ready或者你习惯的任何东西,在这里并不适用 – 除非你只是做接口/硬编码的HTML东西。 如果您正在与iPhonefunction(如GeoLocation)交互,则需要在 onDeviceReady被调用后执行所有操作。
Pick a UI/library
界面/库,jQuery的手机,sencha的触摸,jqtouch等有很多的select。这些提供了一个独特的方法和function集。 做一些研究和使用一个,但避免结合。 你可以阅读更多的选项,工具在这里: http : //www.phonegap.com/tool (链接更新)
Also, more on just mobile development in general, with PhoneGap
如果您正在寻找构build应用程序,这是通过Android市场和iPhone应用程序商店分布,我会通读他们详尽的名单,指导如何开发你的应用程序。 例如,在上面的工具链接中,有一个称为Easy APNS的“工具/插件”,虽然这对于Android非常有用,并且在iPhone上可行,但这违反了开发协议,因为它声明您必须使用Apple通知networking等。这只是一个例子,但如果这是你的最终目标,那么阅读这些东西将会为你节省很多麻烦。
总而言之,这对于轻量级应用程序来说非常棒,特别是如果你来自networking开发背景的话。 LocalStorage,GeoLocation等等。工作得很好。 我希望这有助于一些…并感觉提出问题。
其他编辑:
我真的认为这取决于你想要做什么,以及你知道如何去做。 马特指出,开发原生应用程序,对于iOS更好,等等。是的,如果你有时间和知识,要学习 – 当然本机会更好。 但是,PhoneGap是为可以利用现有技能和构build应用程序的Web开发人员而开发的。 此外,PhoneGap允许您快速构build应用程序,适用于iOS,Android,Symbian,Palm,Blackberry。 对每个代码都做一些小的调整。
以下是我为PhoneGap所读过的所有最好的性能指南…为了确保你有稳定,稳定的性能,还有很多值得警惕的地方…但是你可以在阅读的一个晚上把它们全部拿出来。
这里是最好的掘金队:
PhoneGap /移动Web性能技巧
- 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/ – debugging你的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的video性能提示: http : //vimeo.com/17882927
- 它涵盖了Sencha的性能特征,这是我们可以重新应用的重要原则。 我们甚至可以削减某些Sencha的代码来重新申请Skej。
- 它声明我们必须销毁DOM上不可见的东西。 而且DOM必须始终保持尽可能小,只有尽可能less的听众。 (即附加一个监听器到列表的父项,而不是每个列表项。)
- 它也有实用的CSS3提示,我申请…基本上,不要使用许多新的过渡和阴影/圆angular,因为目前使用的CPU,而不是GPU。
-
Sencha Touch中的事件委派:如何用单个监听器来devise列表,而不是每一行都有一个。 http://www.sencha.com/blog/event-delegation-in-sencha-touch/
- 优化Sencha触摸中的DOM内存使用:从“列表”滑动到“详细信息”面板并杀死列表,然后从“详细信息”滑动到“列表”并杀死详细信息面板。 最小化屏幕上的元素,即DOM。 http://www.sencha.com/blog/sencha-touch-optimizing-memory-usage/
- 破坏任何不可见的DOM!
- 使用CSSanimation而不是jQuery
- http://nyroo.com/l/B7UN5c
- http://www.ferretarmy.com/css-animation-examples/
- 要小心……当他们不利用GPU时,这些技巧是非常棘手的,并且会导致CPU停滞不前。
启用新function
- 启用视网膜显示: 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和Hand-code: http : //cubiq.org/do-you-really-need-jquery-for-mobile-dev
- 在Mobile Safari中显示联系人列表: http : //cubiq.org/contact-list-on-webkit-for-iphone
- iScroll4:创build一个标题,在固定大小的div内滚动,捏和缩放,上拉/下拉刷新。 http://cubiq.org/iscroll-4 (包括橡皮筋效应提示。)
- PhoneGap的GitHub回购:包括有趣的例子,如DatePicker,SMSComposer,ApplicationPreferences,Splashscreen,NetworkActivityIndicator … https://github.com/phonegap/phonegap-plugins
build筑
在Ext JS 4中构build您的应用程序: http : //www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2
在expression我对Phonegap的看法之前,我需要发表一点声明,说我绝不是Web开发人员。 对我而言,编写JavaScript和CSS就像是拉扯牙齿。 这就是说,我不喜欢Phonegap。
这个框架有几个非常有吸引力的方面,主要是“一次写一次运行”的呼吁和“我不要学习目标-C”。 上诉。 该框架甚至可以让您访问一些像加速度计这样的硬件function。 所有这些在一定程度上都是有效的。
也就是说,没有任何优秀的iOS应用程序是使用任何types的跨平台框架构build的。 有许多微妙和优雅的用户界面交互,为您处理的本地UIKit控件,许多用户和开发人员认为是理所当然的,直到他们失踪,如难以置信的详细视图animation曲线和滚动反弹,不存在在基于networking视图的用户界面中。 你可以辛勤地繁殖它们,但是那个时候投资,为什么不去当地呢?
第二点要注意的是Phonegap构build的iOS应用程序的支持社区比本地开发的应用程序要小得多。 如果你是一个在项目中依靠社区,这也应该让你停下来。
最终归结为您想要提供的体验质量。 Phonegap的上限较低。 如果您已经准备好接受不太好的用户体验来换取缩短的开发时间和增加可移植性,那么这是一个非常可行的框架。
作为任何有兴趣的人的潜台词,Marco Arment和Dan Benjamin最近讨论了这个话题。 你可以在这里听。
安装过程涉及许多包(Java,Apache Ant,Ruby,iOS SDK,Android SDK和PhoneGap本身),所有这些包都必须正确安装和设置。 这可能是一个重大的努力。 公平地说,他们有一个叫做PhoneGap Build的testing版本,可以让这更容易。
我们使用它与NS基本/应用程序工作室产生的应用程序符合资格的应用程序商店。
如果你没有制作游戏或小部件,只需要简单漂亮的应用程序,然后phonegap是你的select。
但是你应该注意你的JS,避免在JS中做任何事情,如果你想要做任何animation避免设置一个小间隔(例如100毫秒)的计时器,避免jQuery和类似的animation。 例如,通过设置一个逐步降低每个点的不透明度的短周期计时器(这是jquery淡入淡出效果),可以使用css3从不透明度1到不透明度0的转换,而不是通过animation淡入淡出。
我的build议是去像zeptojs.com,所有phonegap将不会运行ie6 🙂
检查一下如何让你的JS更轻
如果您不需要HTML5和Phonegap提供的任何硬件function或性能,封装的Web应用程序(加上对其他function的有限访问)是一个很好的解决scheme。
许多企业部署大型networking应用程序。 Phonegap(或只是一个简单的Web视图控件与embedded式内容)将允许您离线运行这些Web应用程序(当然,除了所需的任何在线数据)。
在几种不同的设备中部署时,没有提到一个“痛苦”:设备越多,学习曲线就越大。 要使用PhoneGap部署到iOS设备,您需要在Mac上学习Xcode的基础知识。 要部署到Android,您需要安装和学习Eclipse,Android SDK等。其他平台要求使用自己的SDK。 学习一些基本的Xcode,Javascript和Java可以帮助我理解错误和一般的语法。
“一次创造,四处布置”,走出了很多步骤!