经常使用的 HTML5 移动应用开发框架比较

对于Mobile Web来讲,如今是快速成长时代。因为采用了HTML5和CSS3技术,移动浏览器的性能增强了许多,同时,移动app的框架也扩展了,这意味着为移动设备建立丰富的互动的web体验的可行性又提高了。采用诸如PhoneGap这样的封装软件,您就可使用native app Store以及单个代码库,就能够分布式部署iPhone,iPad和Android等不一样的目标平台了。 

对于Mobile Web的开发人员来讲,切换框架代价很高:由于动画的转换,工具栏,按钮,列表的显示,以及线下存储等都很麻烦。由于大部分上述功能都是新技术,以及这些领域的技术还在迅速地改变。本文做者(Dzyngiri)玩转了许多Mobile Web的框架而且对它们进行了分析比较,下面将为您讲解他的研究发现。 

1.  jQTouch  

jQTouch易用性强,相关文档也很全面。它的特点是在 使用HTML,CSS和JavaScript建立iPhone App方面拥有出色的能力。jQTouch使用渐进加强的方案,在您相应的HTML顶层来实现像iPhone那样的用户体验。它简单易用,提供了一个基础的小工具集以及动画方案,开发人员只须要编程控制其动态行为便可。 

不过在做者的简单测试中发现app的性能存在必定的问题,页面在转换时可能出现跳转或者缺失的状况,以及在响应tap事件的时候还有周期性延迟。该项目在技术上还活跃着,不过原做者的进展和部署都显得太慢了。 

只须要遵照MIT的license许可就可使用jQTouch了,MIT lic是做者最喜欢的开源许可之一。 

2.  jQueryMobile  

jQuery Mobile是这个领域的新丁,2010年8月才正式宣布成立,可是已经迅速进展到功能丰富的Alpha 2测试版本了。jQuery Mobile跟jQTouch相比很类似,可是更加标准,更有适应性,感受很像jQTouch的后继版本,对用户接口和style的支持范围更加宽广了。 

jQuery Mobile的性能是不稳定的,(虽然比jQTouch好一些)特别是在响应TAP事件的动画延迟补偿的时候。此外,还缺乏一些关键的程序hook,因此不能轻松地让app更加具备动态性能。例如:当一个页面启动的时候事件触发了,这时候却没法通知响应的代码页面将转向哪一个用户接口,也不能传递附加的信息给处理模块。针对上述问题,建立工做区来解决仍是可行的,可是在这里做者但愿其未来的版本能从jQTouch那里学习一下,并把如今的功能缺陷处理掉。 

jQuery Mobile的相关文档资料很零散可是有所改进,做者很但愿它们能变得像核心jQuery库那样具备鲁棒性。(请注意,jQuery Mobile是和jQuery UI相辅相成的,并非建在单纯jQuery之上的) 

想得到jQuery Mobile只需得到MIT或者GPL2 license。 

3.  Sencha Touch  

这是个与Ext JS框架彻底不一样的产物,其方案与jQTouch/jQuery彻底不一样:Sencha生成本身的DOM(基于用JavaScript建立的对象)代替了先前存在的HTML加强方式。如此,使用Sencha工做的感受不像是web编程,而更像是使用Java或者Flex等技术来作app的样子。比起jQuery来,Sencha的感受更像是YUI。做者我的比较偏好渐进加强的方案,尽管其性能还真有些不尽人意的地方。 

sencha跟其竞争对手们相比,扩展性强了不少:它拥有大量的用户接口组件,直接的iPad支持,拥有JSON和HTML5线下存储技术使得存储和数据绑定更加方便。(使用Sencha的数据结构来操做app的数据十分酷~它能够实时响应列表的更新)此外,Sencha仍是惟一在工具栏上支持内嵌的对象支持,其余方式都是滚轮列表的样子。 

在做者的测试程序中,使用Sencha与jQTouch/jQuery相比,虽然app很明显地不那么轻量级,可是其性能和可靠性方面明显提升了,不过其初始化加载时间略慢。 

当您使用库library或者框架frame进行开发的时候,不遵照框架或者用你本身的方式一般都不会得到成功。但Sencha的支持范围足够宽广,这意味着您可使用Sencha的开发方式来实现任何需求。做者最开始用的是WebKit的内嵌SQLite数据库来作线下存储,可是最终仍是由于其复杂性和各类bug问题的烦恼而放弃了,转而使用了Sencha数据存储的功能。 

在文档方面,Sencha作的不太好,虽然很普遍,可是又有不少旧版本的老漏洞没有及时更新,做者就在这些框架中与bug做斗争,调试过程浪费了不少时间,由于文档不够健全,不少问题难以追踪或理解。而在开发者论坛响应做者提问的频率还算较高,不过最终感受仍是不太够。Sencha提供的付费技术支持起价是$300每一年,做者很强烈地打算付费了,可是Sencha的回应是很好奇地打听为啥这么急着给他们送钱,真搞不懂。

获取Sencha须要遵照GPL3 license,以及在某种不是GPL标准又很类似LGPL的受权下也能用,以及遵循非商业license也能够得到。 

4.  TitaniumMobile  

与Sencha Touch很类似,Appcelerator公司的Titanium Mobile可让您使用Javascript API来编写app。不过与Sencha不一样的是,Titanium把你的代码编译成Native的iPhone或Android app,这意味着它并非一个真正的Web框架,而是一个兼容层或者编译器。(请注意Titanium Mobile的近亲Titanium Desktop是一个基于web的,让您可使用HTML /js来编写桌面封装的本地应用的一款软件) 

这么说来Titanium容许web开发人员使用JavaScript和一点点XML之类的其余相关技术,能够实现高性能、更换皮肤很方便的Native App,而不须要额外去学习Objective-C或者Cocoa Touch等技术了。做者的简单测试代表其性能不错,吹散了框架方面的疑云,并且整合起来也不是太难。 

不过这个优势也是其致命的缺点,您只能做出Titanium所支持的平台上面的应用,你被它们的开发工具限制住了。做者想证实这一点只须要换一个不是iPhone的平台上来跑一下就知道了。同时,Titanium的调试器也不怎么样,不能使用XCode方式运行或者调试,就算在其仿真器上面程序跑的还算不错,仍是须要做者本身去实际机器上本身再找问题。 

分析  

做者在这4个框架上面挑选了3种并编造了本身的app来试一试,过程虽然很冗繁,可是收获也颇丰。做者很喜欢jQTouch,可是不太相信它会在现有版本上再前进多少了。对于jQuery Mobile,很赞扬其简单易用性以及其以web为中心的开发方法,不过它的缺点是缺乏核心特点,跟Sencha比性能差不少。 

用一个Alpha 2版本的产品来跟一个1.0版本的正式版相比或许有失公平,可是在用户具备很强烈的刚性用户需求时就必须作出选择了,因而做者选择了Sencha Touch。做者最初被其强大的性能和宽广的支持程度所吸引,最终更喜欢其开发风格。随着开发的深刻,其文档的漏洞让做者十分沮丧,可是其普遍的支持程度依旧吸引着做者,渐渐适应了其开发风格。若是他们愿意回复邮件的话,做者颇有意向付费以获取技术支持。不过如今,Pints的发布已是一个基于Sencha的app了。 

结论  

做者尚未回答最大的问题呢:一个基于web的app在没有本地app的状况下可否hold住局面?若是能够的话,实现这样的技术是否值得舍弃原来那种单一代码库方式所带来的代价呢? 

鉴于两星期以来Pints的实际应用,做者倾向于说不。Pints在性能和bug方面陷入僵局,平均每隔10-15秒页面就乱跳,在滚动页面的时候容易乱跳,动画效果也不是很连贯。 
相关文章
相关标签/搜索