罗里·布莱斯(Rory
Blyth)的答案包含有关两个Javascript移动框架的一些有效观点。但是,他的要点是不正确的。事实是Titanium和PhoneGap相似而不是不同。它们都通过一组javascriptAPI公开了手机功能,并且应用程序的逻辑(html,css,javascript)在本机WebView控件中运行。
PhoneGap不仅仅是Web应用程序的本机包装。通过PhoneGapjavascriptAPI,“网络应用”可以访问手机功能,例如地理位置,加速度计摄像头,联系人,数据库,文件系统等。基本上,手机SDK提供的任何功能都可以“桥接”到Javascript世界。另一方面,在移动Web浏览器上运行的普通Web应用程序无法访问其中大多数功能(安全是主要原因)。因此,PhoneGap应用程序比Web应用程序更像是移动应用程序。您当然可以使用PhoneGap来包装完全不使用任何PhoneGap API的Web应用程序,但这不是为PhoneGap创建的。
Titanium不会将您的html,css或javascript代码编译为“本地位”。它们被打包为可执行包的资源,就像嵌入式图像文件一样。当应用程序运行时,这些资源将被加载到UIWebView控件中并在其中运行(当然是Javascript而不是本机位)。没有像javascript本地代码(或目标c)这样的编译器。这也可以在PhoneGap中完成。从架构的角度来看,这两个框架非常相似。
现在,它们有什么不同吗?是。首先,通过将更多的手机功能桥接到javascript,Titanium似乎比PhoneGap拥有更多的功能。最明显的是,PhoneGap不会向Javascript公开许多(如果有)本机UI组件。另一方面,Titanium具有完善的UI
API,可以在javascript中调用它来创建和控制各种本机UI控件。利用这些UI
API,Titanium应用程序看起来比PhoneGap应用程序更“原生”。其次,PhoneGap比Titanium支持更多的手机平台。PhoneGap
API更为通用,可以在不同的平台上使用,例如iPhone,Android,Blackberry,Symbian等。Titanium至少目前主要针对iPhone和Android。它的某些API是特定于平台的(例如iPhoneUI API)。
因此,如果您对应用程序的关注是使其更具“本机”外观,那么Titanium是更好的选择。如果您希望能够更轻松地将应用程序“移植”到另一个平台,PhoneGap会更好。
更新: 我决定对该帖子进行年度审核,以使其信息保持最新。一年中发生了许多变化,使得最初发布中的某些信息已过时。
最大的变化来自钛。今年早些时候,Appcelerator发布了Titanium
1.0,从体系结构的角度来看,它与以前的版本大不相同。在1.0中,不再使用UIWebView控件。相反,您可以为任何UI函数调用Titanium
API。此更改意味着几件事:
您的应用程序用户界面完全变为本地用户。由于本机Titanium API接管了所有UI需求的控制,因此您的应用程序中不再有Web UI。通过开创“跨平台本机UI”边界,Titanium应该获得很多荣誉。它为喜欢本机UI外观但不喜欢官方编程语言的程序员提供了替代方法。
随着网络视图的消失,您将无法在应用中使用HTML或CSS。(注意:您仍然可以在Titanium中创建Web视图。但是在Web视图中可以利用一些Titanium功能。)
您将无法使用假定存在DOM对象的流行JS库(例如JQuery)。您将继续使用Javascript作为编码语言。但是,如果您以Web程序员的身份来到Titanium 1.0,那几乎就是您可以利用的唯一Web技术。
现在,Titanium1.0是否将您的Javascript编译为“本地位”?否。Appcelerator最终通过以下开发人员博客解决了这个问题:Titanium GuidesProject:JSEnvironment。我们的程序员比行销部门的人更真实,不是吗?:-)
转到PhoneGap。关于PhoneGap没什么新鲜的话要说。我的看法是,直到IBM在今年晚些时候加入之前,PhoneGap的开发才非常活跃。甚至有人争论说,IBM向PhoneGap贡献的代码比Nitobi多。不管是正确与否,最好知道PhoneGap正在积极开发中。
PhoneGap继续以Web技术为基础,即HTML,CSS和Javascript。就像Titanium一样,PhoneGap似乎没有任何计划将本机UI功能桥接到Javascript。尽管WebUI在性能和本机外观方面仍落后于本机UI,但这种差距正在迅速缩小。Web技术有两种趋势可确保在性能方面为移动Web UI带来鲜明的功能:
Javascript引擎从解释器移动到虚拟机。Javascript被JIT编译为本地代码,以加快执行速度。Safari JS引擎:SquirrelFish Extreme
网页渲染已从依靠CPU转变为使用GPU加速。借助硬件加速,图形密集型任务(例如页面过渡和3D动画)变得更加流畅。Chrome中的GPU加速合成
源自桌面浏览器的此类改进正在迅速交付给移动浏览器。实际上,自iOS 3.2和Android
2.0起,移动Web视图控件的性能和HTML5友好性大大提高。移动Web的前景如此光明,以至吸引了一个大孩子:JQuery最近宣布了其移动Web框架。我认为,借助JQuery
Mobile提供的UI小工具,以及PhoneGap提供的电话功能,两者结合起来创建了一个完美的移动Web平台。
我还应该提到Sencha Touch作为另一个移动WebUI小工具框架。Sencha Touch1.0版最近以包括GPLv3的双重许可模式发布。就像JQuery Mobile一样,Sencha
Touch与PhoneGap配合使用也很好。
如果您是GWT程序员(例如我),则可能需要查看GWTMobile,这是一个用于使用GWT创建移动Web应用程序的开源项目。它包括一个PhoneGapGWT包装器,该包装器允许在GWT中使用PhoneGap。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)