用JQuery Mobile做HTML5移动应用的三个优缺点

jopen 12年前

        英文原文:Niall O’Higgins,编译:伯乐在线——唐尤华

        在过去大约一个月的时间里,我一直在使用 JQuery Mobile 为一个健身培训网站开发基于 HTML5 的手机/平板前端应用。我之前曾经写过 Android 和 iOS 应用程序(分别用 Java 和 Objective-C),因此只要编写一段基础代码就可以在主流平台上运行并能够快速地用 HTML 和 JavaScript 迭代,这样的许诺十分诱人。

        JQuery Mobile & HTML5

        使用 HTML5 和 JavaSript 构建一个手机应用,你需要写很多 JavaScript 代码。然而,带有触摸屏的设备的 UI 控制和处理与标准的 Web 应用程序非常不同。因此,你会想要使用现成的手机 HTML5/JavaScrip 框架(除非你有很多的时间并且打算将所有东西重新构建)。现在有很多现成的框架可供选择:jQTouch、 Sencha Touch 等等。

        我成为 JQuery 的粉丝已经很多年了,尤其欣赏它的至简哲学以及出色的核心特性和插件以及社区的贡献。正是由于有 JQuery,我才能够接受使用 JavaScript 开发。所以,当听到 Chris McDonough(Pyramid Python Web 框架的作者)发布 JQuery 的好消息时,我知道我应该去试一试。

        JQuery Mobile 和 HTML5 的 3 个优点

        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移动应用的三个优缺点

        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 上,使用的是原生 非死book 绑定,效果令我映像深刻。我会在未来的博客中写一些使用 PhoneGap 的经验。

        总结

        总的说来,我认为使用 JQuery Mobile 和 HTML5 作为手机应用开发平台是可行的。然而,这并不适用于(至少到目前为止)所有类型的应用程序。对于简单的内容显示和数据输入类型的应用程序(相对的是需要丰 富多媒体/游戏程序),它是对原生程序一个有力的增强。我对自己的应用程序使用新平台的结果感到高兴——不再需要同时为 Android 和 iOS 维护我的健身跟踪软件。

        在接下来的1-2年中,随着硬件变得越来越快,手机设备越来越多样化,我相信 HTML5 (JQuery Mobile, PhoneGap, 等等)在手机应用开发中会成为更加重要的技术。