简介:如今,Ajax 仍然是业界的热门字眼,越来越多的应用程序都采用 Ajax 技术构建。然而,构建一个好的 应用程序并不容易。本文将着重讨论如果构建 直 观易用的受 Ajax 驱动的应用程序。
Ajax 并不只是一种技术。大多数开发人员却认为它是,并试图借助诸如 XML 和 JavaScript 这类语言证明其观点。但这种观点非常局限,并且,忽视了付钱 给您的人:客户,不管是咨询代理还是您的老板(只有您建立了令人满意的用户 群,他们才能获得收入)。
客户并不关心技术;他们关心的是应用程序的外在表现如何,以及当他们通 过 鼠标和键盘操作时,应用程序如何响应。您可以将世界上所有的技术都构建到应 用程序中,而此应用程序却不一定能有多成功,您也可以构建一个非常简单的 HTML 应用程序,它却可以工作得很好。因此,我们的目标是要结合技术和可用 性 ,这一点对 Ajax 应用程序而言尤其正确。
Ajax 的承诺
了解 Ajax 所能提供的功能对于开发人员和用户而言都非常重要。不管您是 否 将应用程序定义为 Ajax,人们对 Web 应用程序都有了更高的期望,如果想要让 客户满意,最好了解这些期望。
可用性
首先,Ajax 关乎可用性。有些开发人员可能会奇怪,因为 Ajax 已经给人们 带来了瞬间的响应时间、小部件和可视工具以及各种各样的 GUI 元素。这些绝 对 是 Ajax 体验的一部分,但是大多数用户 — 而非开发人员 — 只是发现 Ajax 应用程序更好用。它们能像用户期望的那样响应,应用程序的元素 — 字段、按 钮和图像 — 均符合用户的期望。
其结果就是应用程序很好使用。用户无需做很多查找,比如查找 zip 代码字 段在哪以及又该如何在地图上做缩放。如果所设计的是 Ajax 应用程序(并且即 使设计的不是这类应用程序),就应该争取达到同等的可用性程度。用户试用和 常识是最好的指导,接下来,我们将讨论一些可用来确保应用程序可用和直观的 简单方法。
响应性
处理完可用性后,就需要处理 Ajax 应用程序的响应性了。初看上去,这似 乎 是有关速度的问题。Ajax 应用程序无需在每次发生事件时都向服务器端程序提 交 并刷新页面,这意味着等待的减少(至少理论上如此)。然而,Ajax 特性的这 一 部分多少有点人为因素。在 DSL 世界,等待并不是很多。您的母亲和祖母可能 用 的是有线 modem,而不是拨号上网,如果您在工作中阅读本文,那么很可能所用 的网络是 T1 或 T3。Ajax 应用程序的速度天生较快,这一点很难理解(如果速 度真的较快,快多少?10 毫秒?100 毫秒?您知道这意味着多么短的时间么? ) 。
然而,Ajax 应用程序应该比传统应用程序有更好的响应性。这不仅仅是指速 度这一个方面,它还涉及到了应用程序给人的感觉如何(而这主要体现在可用性 和界面)。比如,假设您输入自己名字并开始选择您所喜欢的 Crocs 的颜色, 在 您进行其他操作的时候,程序会有很多时间执行其他任务。所以应用程序可能会 获取您的地址、所保存的信用卡信息,可能还有您之前在访问这家网上商店时已 经标示为朋友的那些人。所有这些信息可能会花费很多时间,但如果您正在忙着 做其他一些事情,并且这些信息已经显示为可用,那么会觉得应用程序响应性 非 常好。
需要一些技巧的是 — 我们将会对此详细加以讨论 — 何时开始制造 这种响 应性。通过以特定的方式在应用程序中排列字段,就会知道用户将要遵循的操作 流程。这样一来,我们就可以编写 Ajax 交互程序以便利用这一流程。请记住这 一点,我们先对其稍做论述,稍后我们再用特定的示例回到这一主题。
独特的类桌面界面
这是最能为人接受而同时又是最难的一个 Ajax 应用程序的特性。我们所说 的 “感觉上” 像桌面应用程序,在很多时候,是指 “看起来” 像桌面应用程序 。 我的公司使用的是 Zimbra 邮件套件,它模仿的是 Microsoft Outlook,我猜想 其中的原因一定是觉得看起来像桌面应用程序就会感觉上也像桌面应用程序。
有关这一问题,有很多不同的见解。有些人认为 Web 的目的就是要成为一种 新的桌面。您将使用的是同样的应用程序 — 或其类似物 —,只不过这些程序 将 都是在线的。初此之外,其余的看起来和感觉上均与之前无异。另一些人(我承 认,我更偏向这一阵营)认为 Web 是一种独特的空间,有些地方好于桌面应用 程 序,有些地方则更差。Web 是其自身的媒介,Web 上的应用程序应该单独设计, 而不能只简单克隆桌面应用程序。
不管何种情况,有一点很清楚,即 Ajax 应用程序能够看起来比 1997 年的 HTML 表单要好很多,那时的表单只有大的灰色的 Submit Form 按钮和沉闷的 “ border=1” 装饰。所以 Ajax 范型需要更加丰富的体验,即使很多人在如何实 现 的问题上意见不尽相同。