移动 Web 使用量正呈指数型增长。随着更多的人习惯于使用智能手机或其他移动设备浏览 Web,针对那些为了实现移动版本而进行优化的网站和 Web 应用程序的需求在增加。由于平台数量越来越多(iOS、Android、Blackberry OS、webOS、Windows Phone、Symbian、Bada 等),很难开发针对多个移动操作系统的原生应用程序。
因此,人们迫切需要开发移动 Web 应用程序的工具包。几个主要的 JavaScript 框架(Dojo、jQuery 和 Sencha)很快提供了完全感知触摸屏的框架。通过与 PhoneGap 等原生编译工具包相结合使用,这些框架可以为原生开发提供出色的替代方法。Web 开发人员可以使用他们已熟悉的语言和框架构建原生应用程序,然后相对容易地将这些应用程序部署到许多平台上。
在本文中,我们将了解 Dojo Mobile,它是 Dojo Toolkit 的扩展。我们会先研究移动 Web 与原生应用程序之间的区别,然后通过示例了解如何在应用程序中包含和使用 Dojo Mobile 小部件。还要了解如何使用 PhoneGap 构建原生应用程序。
移动 Web 与原生应用程序
关于使用原生平台还是使用 Web 平台开发移动应用程序的争论可能会持续很长一段时间。这两种方法各有优缺点。在许多情况下,应该根据应用程序需求和个人偏好来选择。
为什么要编写原生应用程序而不是使用移动 Web ?表 1 总结了编写原生应用程序的一些优点和缺点。
表 1. 原生应用程序
优点 缺点 代码
更快,可以直接在设备的操作系统上运行,不需要中间的浏览器应用程序。 可以部署到应用程序商店中,这提供了简单且经济有效的分发模型。 原生 SDK 有许多设备特
有的特性,通常有详细的文档说明和示例。 由于各个平台 SDK 中的编程语言和 API 存在一些差异,
所以需要针对不同的设备要求完全分隔同一应用程序的各个版本。 通过应用程序商店部署原生应用程序通常需要第三方批准,这会显著降低将应用程序投放市场的速度(尤其在应用程序遭到拒绝的时候)。 发布更新(即使是很小的更新)需要经过批准过程,这让向用户交付关键的更新变得更困难。
表 2 总结了移动 Web 应用程序的优点和缺点。
表 2. 移动 Web 应用程序
优点 缺点 只需编写一个应用程序,即可部署到多个平台。不需要为不同的设备编写不同的版本。 可以通过 Web 部署应用程序,不需要第三方应用程序商店。 您可以获得应用程序产生的所有收入(如果收费的话)。 对于通过 Web 分发的应用程序,如果通过浏览器使用它们,则无法像原生应用程序那样使用许多设备特性(相机、麦克风等),尽管这个限制以后可能会有所改变。 您需要提供用于分发应用程序的基础架构,这比使用应用程序商店更困难、成本更高。 因为应用程序在浏览器中运行,而不是通过操作系统执行,所以应用程序的运行速度不如相应的原生应用程序。
幸运的是,有一个折中方法可以同时提供移动 Web 和原生方式的优势。可以使用 PhoneGap 等平台将移动 Web 应用程序包装在原生包装器中,这提供了 JavaScript API,使您能够访问原生设备 API。还可以将 Web 应用程序作为原生应用程序部署到各个应用程序商店。
Dojo Mobile 概述
Dojo Mobile 是 Dojo Toolkit 的扩展,它提供了一系列在移动设备(比如智能手机或平板电脑)上使用而优化的小部件或组件。这些组件基于相应的原生组件,为熟悉智能手机应用程序的用户提供了熟悉的界面。可以使用主题定制这些组件,例如可以向 iOS 用户而不是 Android 用户提供不同的样式集。
Dojo Mobile 的使用方式与 Dijit 组件库类似。要想在应用程序中使用某种小部件,首先需要在应用程序的主 JavaScript 块中使用 dojo.require 加载相关的类。然后可以在应用程序中添加这种小部件,既可以使用带 dojoType 属性的常规 HTML 标记以声明的方式添加小部件,也可以使用 JavaScript 代码通过程序添加小部件。
Dojo Mobile 在 iOS、Android 和 BlackBerry OS 6 设备上表现很好,这主要是因为在这些平台上有 WebKit 浏览器。这一优势在提供了比较完善的 WebKit 浏览器的其他平台(比如 HP webOS 及其他设备)上也能发挥很好的效果。在非 WebKit 浏览器上,Dojo Mobile 应用程序会优雅地使用替代方法,它们甚至可以在老式的桌面浏览器中运行(包括 Microsoft® Internet Explorer)。在默认情况下,只提供了 CSS3 样式,但是,只需使用一行代码,就可以为非 WebKit 浏览器添加兼容性模块:
dojo.requireIf(!dojo.isWebKit, "dojox.mobile.compat");
Dojo Mobile 的关键特性包括:
由于使用 Dojo Mobile 解析器,实现了小部件的轻量加载。 CSS3 动画和渐变,可以在高端 iOS 和 Android 设备上产生与原生应用程序相似的体验。 包含提供 iOS、Android 和 BlackBerry 外观的主题。 能够与非 CSS3 兼容的设备和浏览器进行兼容。 完全声明式的语法,便于学习。 一个庞大的 UI 小部件和组件套件,提供了针对移动友好的界面的
丰富内容
下一节通过构建 “Hello, World” 应用程序解释如何开始使用 Dojo Mobile。