开发者们经常思考的一个问题是该开发Web应用、本地应用,还是其他混合形式的内容。其实,该问题的答案虽不确定但十分简单,在正式的开发工作开始前,开发者需想清楚一些关键问题,如:目标受众是谁?开发该应用的目的是什么等等。
市场研究公司Forrester表示,开发者不应该在本地代码和HTML 5之间进行非此即彼的选择。以下是Forrester关于四种开发方案的具体分析:
1)本地应用:
提供最好的用户体验、性能,以及设备API访问(摄像头、联系人、手机状态等);不过,由于四个主要的移动平台(iOS、Android、Windows Phone、BlackBerry)使用不同的代码库,因此同一款应用需要针对不同的平台进行多次开发,导致实际的开发预算可能会比预期高出150%至210%。
2)HTML 5/JavaScript Web应用
优点是浏览器无处不在,HTML 5的 <audio>和<video> 标签,以及设备访问API极大地增强了Web应用的功能;不足是JavaScript没有本地代码快,用户体验和设计流畅性做得不是很好。
3)HTML 5+JavaScript混合应用
该混合方案使其兼备多种本地功能,是Facebook移动应用和PhoneGap所采用的方案。从某种意义上来说,不管是对Web应用,还是本地应用,都最为两全其美。
4)移动中间软件
集成客户端和服务器端组件开发等多种开发环境,多适用于使用Oracle或SAP等系统的企业级开发工作室。
除此以外,开发者还需认真考虑的是成本和资源。在当前环境下,开发工作室通常会找一些精通Web技术的编码人员开发适用四种主要平台的应用。对Web应用来说,Forrester建议使用HTML 5+JavaScript混合方案;本地应用虽然有更好的视觉效果和更强大的设备访问API,但其跨平台的高额开发成本可能会让很多开发者望而却步。
小结:
总的来说,HTML 5+JavaScript混合方案是成本控制和潜在市场覆盖的最佳组合,极有可能成为未来移动开发市场的主宰。
PhoneGap
在等会谈到更深入的细节之前,我想解释一下什么叫做
PhoneGap。PhoneGap 首先是一个应用程序容器技术,它能让你用 HTML,CSS,JavaScript来创建原生可安装的移动应用程序。PhoneGap 的核心引擎是100%开源的,它是属于
Apache Cordova项目的旗下产品。你可以通过我的
另外一篇文章来加强了解 PhoneGap.
PhoneGap 用户界面
PhoneGap 应用程序的用户界面使用 HTML,CSS以及JavaScript来创建的。而它的界面底层实质上是用浏览器视图创建的,而浏览器视图将占据真实设备的100%宽度与100%的高度。
建议把这个设想为一个无头部的Web浏览器。与普通浏览器一样可以渲染HTML内容,但是不会显示普通浏览器的边框。所以你可以充分使用这些空间,比如使用HTML/css创建导航顶部栏。
PhoneGap使用的 Web浏览器与手机操作系统的浏览器其实是一样的。在IOS上,这将是原生Objective-C的UIWebView类;在Android上,这是android.webkit.WebView。
PhoneGap API
PhoneGap 提供了很多API让你可以使用JavaScript来调用很多原生操作系统提供的功能。整个过程就是你用 JavaScript 来写程序的逻辑,然后 PhoneGap API 来处理与原生系统的交互。
另外,你自己也可以使用JavaScript来创建"原生插件"。PhoneGap 的原生插件能让你自己去自定义本地类与对应的JavaScript接口。当然你可以从读读下面几篇文章区更好的了解 PhoneGap 原生插件。
PhoneGap 应用程序打包与发布
虽然 PhoneGap 应用是用HTML,CSS,JavaScript创建的,但是最终生成的是二进制的应用程序压缩文件,这种文件是可以以正规标准发布渠道发布的。
对于IOS应用来说,最终输出是
IPA文件,对于Android应用,则是
APK 文件,对于Windows Phone应用,是
xap 文件,等等。最重要的是打包的格式与与标准原生应用是一样的。随后你就可以在与之对应的卖场上发布了(iTunes Store,Android Market, Amazon Market, BlackBerry App World,Windows Phone Marketplace等等)
PhoneGap 高级应用程序架构
PhoneGap 应用程序运行起来更像Web应用程序一样,PhoneGap 客户端与对应的服务器交互传递数据。服务器先处理业务逻辑然后将结果返回给客户端。
一般说来,服务器都是指像Apache,IIS这种环境与一些特定的脚本语言比如 ColdFusion, Java, .NET, PHP等。PhoneGap 是一个完全的前台展示技术来与任何类型的服务器使用标准Web协议来交互数据。应用程序的对应服务器来处理业务逻辑与计算,然后从数据库保存以及获取数据。
PhoneGap 应用一般不直接与数据库打交道;而是以标准HTTP来与服务器程序交互。来获取HTML内容,
REST-ful
XML Services,
JSON Services,或者
SOAP。这和你创建的那种基于AJAX技术的桌面型浏览器控件的应用是差不多的。
PhoneGap 的这种客户端模式架构一般都是使用
single-page application model,即应用程序的逻辑都是在一个HTML页面上。而且页面不是从内存上清空。所有的数据都是需要以HTML DOM的方式来显示出来。首先使用AJAX技术来从服务器上获取数据,然后使在JavaScript中保存这些变量。
虽然多页面的客户端程序架构现在也被支持了,但是因为会在加载分离页面的时候你回丢失一些需要保存的变量,所以不建议使用这个新架构。