在过去大约一个月的时间里,我一直在使用JQuery Mobile为一个健身培训网站开发基于HTML5的手机/平板前端应用。我以前曾经写过Android和iOS应用程序(分别用Java和Objective-C),所以只要编写一段基础代码就能够在主流平台上运行并可以快速地用HTML和JavaScript迭代,这样的许诺十分诱人。前端
JQuery Mobile & HTML5jquery
使用HTML5和JavaSript构建一个手机应用,你须要写不少JavaScript代码。然而,带有触摸屏的设备的UI控制和处理与标准的Web应用程序很是不一样。所以,你会想要使用现成的手机HTML5/JavaScrip框架(除非你有不少的时间而且打算将全部东西从新构建)。如今有不少现成的框架可供选择:jQTouch、 Sencha Touch 等等。web
我成为JQuery的粉丝已经不少年了,尤为欣赏它的至简哲学以及出色的核心特性和插件以及社区的贡献。正是因为有JQuery,我才可以接受使用JavaScript开发。因此,当听到 Chris McDonough(Pyramid Python Web 框架的做者)发布JQuery的好消息时,我知道我应该去试一试。浏览器
JQuery Mobile 和 HTML5 的 3个优势app
1. 上手迅速并支持快速迭代:在一个星期多一点的时间里,经过阅读JQuery Mobile文档以及O’Reilly出版的JQuery Mobile书籍,我完成了一个能够工做的app初步版本。在此以前我没有HTML5 / JQuery Mobile开发经验。与Android和iOS相比,使用JQuery Mobile和HTML5构建你的UI和逻辑会比在原生系统下构建快得多。框架
译注:原生系统:原装的操做系统,例如Android原生系统是Google发布未经修改的系统。在本文中,原生应用指直接用系统提供的API开发的程序,与JQuery Mobile开发的程序相对应。工具
我发现Apple的Builder接口的学习曲线十分陡峭,一样学习使人费解的Android布局系统也很耗时间。此外,要使用原生代码将一个list view链接到远程的数据源并具备漂亮的外观是十分复杂的(在Android上是ListView, 在iOS上是UITableView)我可以经过已经掌握的JavaScript和HTML/CSS知识快速地实现一样的功能,无需学习新的adapter,delegate等等抽象概念,只要编写JQuery代码就能够作到。布局
2.避免麻烦的应用商店审批过程以及调试、构建带来的痛苦:为手机开发应用,尤为是iOS系统的手机,最痛苦的过程莫过于经过Apple应用商店的审批。想要让一个原生应用程序发布给iOS用户,你须要等待一个至关长的过程(须要好几天,甚至多是好几周)。不只在第一次发布程序时要经历磨难,之后的每一次升级也是如此。这使得QA和发布流程变得复杂,还会增长额外的时间。因为JQuery Mobile应用程序仅仅是一种web应用程序,所以它继承了全部web环境的优势:当用户加载你的网站时,他们就立刻“升级”到最新的版本。能够立刻修复bug和添加新的特性。即便是在Android系统——应用市场的要求比起Apple环境要宽松得多,在用户不知不觉中完成产品升级也是一件很好的事情。性能
进一步的好处是,发布beta或测试版本会更加容易。只要告诉用户用浏览器打开你的网址就能够了!不须要考虑iOS使人抓狂的DRM,也不须要理会Android必须的APK。学习
3.支持跨平台和跨设备开发:一个巨大的好处是,个人应用程序立刻能够在Android和IOS上工做,一样也能够在其余平台上工做。做为一个独立开发者,为不一样的平台维护基础代码是一项巨大的工做。为单个手机平台编写高质量的手机应用须要全职工做,为每一个平台重复作相似的事情须要大量的资源。应用程序可以在Android和IOS设备上同时工做对我来讲是一个巨大收获。
更进一步,尤为是对于运行Android各类分支的设备,它们大小和形状各异,想要让你的应用程序在各类各样屏幕分辨率的手机上看起来都不错,这是真正的挑战。对于要求严格的Android开发者来讲,按照屏幕大小进行设屏幕分割(从彻底最小化到最大进行缩放)会须要不少开发时间。因为浏览器会在每一个设备上以相同的方式呈现,关于这个方面你没必要有任何担忧。
JQuery Mobile 和 HTML5 的3个缺点
1.比原生程序运行慢:在我看来最大的缺点是,即便是在最新的Android和iOS硬件上(双核Tegra 2 Android手机,双核iPad2平板),JQuery Mobile应用程序都会明显慢
于原生程序。尤为是在Android上,浏览器比起iOS更慢且bug更多(虽然谷歌是专一web领域的公司)。我没有在更早的Android设备上测试个人程序,也许根本就不能运行(例如Android G1)。我相信在将来的12-24个月,硬件速度会很快获得提高(例如,四核设备2011年立刻就要上市),性能也许很快就不会成为问题。可是今天,它确实是一个缺点。若是你只专一于iOS,你大能够期待一下浏览器的性能,至少它在这方面是可靠的(不像Android,黑莓等等)
2.古怪(跨浏览器、跨平台开发):JQuery Mobile如今还是beta版本,所以我遇到了不少bug。也就是说,JQuery团队还在积极地回复GitHub上提出的问题。我认为其中最大的一个问题是各类浏览器在不一样的手机平台上古怪的表现。这个问题一直为人诟病。应用程序可能看上去有些古怪——虽然我认为JQuery Mobile团队在widget和主题上作得很棒,但的确和原生程序看起来有显著的不一样。这个问题到底对用户有多大影响不得而知,可是这一点须要引发注意。
3. 有限的能力 vs 原生程序:很明显,运行在浏览器上的JavaScript不能彻底地访问设备的不少特性。一个典型的例子就是摄像头。然而,相似PhoneGap这样的工具可以帮助解决不少常见问题。实际上,我已经开始将个人应用程序经过PhoneGap将几个版本部署到iOS和Android上,使用的是原生Facebook绑定,效果令我映像深入。我会在将来的博客中写一些使用PhoneGap的经验。
总结
总的说来,我认为使用JQuery Mobile和HTML5做为手机应用开发平台是可行的。然而,这并不适用于(至少到目前为止)全部类型的应用程序。对于简单的内容显示和数据输入类型的应用程序(相对的是须要丰富多媒体/游戏程序),它是对原生程序一个有力的加强。我对本身的应用程序使用新平台的结果感到高兴——再也不须要同时为Android和iOS维护个人健身跟踪软件。
在接下来的1-2年中,随着硬件变得愈来愈快,手机设备愈来愈多样化,我相信HTML5 (JQuery Mobile, PhoneGap, 等等)在手机应用开发中会成为更加剧要的技术。