首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.3 Ajax应用程序的特征

或许你会觉得前面对Ajax的定义有些模糊,但Ajax就是这样,它不是一种类似.NET或Java的概念明晰的技术,而更偏向于是对一种用户体验的描述。下面列出的几条可以看作是Ajax应用程序应该具有的典型特征。

1.一个页面就是一个应用程序

传统的Web应用程序一般不只一个页面,用户的一次操作往往会带其进入另一个页面。比如从某个新闻系统的新闻列表页面转到新闻阅读页面,而这些页面的集合才构成了一个“Web应用程序”。对于一个典型的Ajax应用程序,用户无需在不同的页面中切换,只要停留在一个页面中,由XMLHttpRequest对象从服务器取得数据,然后由JavaScript操作页面上的元素并更新其中内容。Windows Live Mail就是一个很好的例子,整个电子邮件系统的全部功能,包括读邮件、写邮件和管理联系人等操作均在一个页面中完成。

2.基于标准技术构建

XMLHttpRequest对象最早是作为IE内嵌的ActiveX组件提供的,然后各种其他的主流浏览器(例如Firefox、Safari以及很快就要推出的IE7等)也随之使用,JavaScript原生对象的形式提供了这一组件。目前W3C正在对XMLHttpRequest的规范进行标准化(http://www.w3.org/ TR/XMLHttp Request/),XMLHttpRequest成为标准已经指日可待。Ajax所用到的其他技术,包括JavaScript、XML、CSS和DOM等,均早已成为标准并被所有的主流浏览器所实现。这样,典型的Ajax应用程序无需客户端进行任何形式的安装部署,即可兼容地运行于每一个主流浏览器之上,因而其优势是Flash、Java Applet和ActiveX等需要下载、安装插件的技术所无法比拟的。

3.迅速、平滑、友好的服务器交互过程

还记得前面提到的论文提交网站吗?使用该网站时,用户不得不将大量的时间花费在等待上。即使客户端和服务器的连接状况非常好,网络延迟可以忽略不计,在加载新页面时浏览器中仍然会有一个显示空白页面的过程,也就是一次“闪烁”。这是因为浏览器需要清除原有的内容并重新写入新的内容。

实际上,用户的一次操作往往仅需要对现有页面的一小部分进行更改。例如,在某一篇文章后添加一条评论。对于用户添加评论之前和之后的两个页面,它们之间的差别仅仅是一条新的评论而已。页面的其他大多数部分,比如页首、页脚、导航栏、文章内容以及现有的评论等都是完全一样的!完全一样的这些内容没有合理地保存下来,而是随着后一个页面的到来被无情地完全抛弃了。

Ajax应用程序则是借助XMLHttpRequest对象的帮助,只从服务器端取得必要的表示这一条评论的数据,而不是新页面的所有内容,避免了在网络中传输不变内容所造成的浪费,也就自然减少了用户等待的时间。

浏览器得到数据之后,再用JavaScript为这条评论添加必要的布局和格式化信息,并添加到页面上。这个添加过程只需要修改页面的一小部分,也解决了整页重绘带来的页面闪烁问题。同时,在Ajax应用程序等待服务器端返回数据时,开发者可以随心所欲地提供各式各样的指示信息,例如一段“加载中……”的文字,或是一些生动的GIF图片(甚至一个网站,http://www. ajaxload.info/专门提供自定义的加载动画)等,让用户不再总是面对单调的浏览器进度条。

若在服务器的通信中出现了某些异常,客户端JavaScript同样能够捕获这个异常,并可以选用多种多样的方法来告知用户,而不是传统Web应用程序中的一个让用户摸不着头脑的“500服务器内部错误”页面。

4.充分重视用户的体验

Ajax应用程序通常很重视用户体验,它们一般都会关注目前用户的操作,并及时地给出下一步的提示。即使是一个很小的动作,客户端都可以将其回送至服务器,然后服务器即可充分利用它掌握的大量信息以及强大的计算能力迅速向用户给出最恰当的提示。

例如,某个系统中用户的所在地信息可以由省份和城市两部分组成。在Web页面上通常使用两个下拉列表让用户选择。当用户选择了省份后,Ajax应用程序就可以通过XMLHttpRequest对象取得该省内所有城市的列表,并填充到城市列表中供用户作出下一步选择。

5.高级UI功能支持

Ajax将许多不同的技术结合在了一起,而它们之间的调解者就是运行于浏览器中的JavaScript。在Ajax中,JavaScript已经不再是往日那个无关紧要的、用来在页面上显示漂浮广告或修改浏览器状态栏之类的、只能够实现某些“小把戏”的脚本语言。(JavaScript说:“我已经长大了!”)通过充分挖掘JavaScript的潜力,我们将能够把许多原本只有桌面应用程序才能够实现的丰富功能(例如鼠标拖动、右键菜单、自动完成、拼写检查、键盘快捷键等)搬到Web页面中,这些都不是问题!

Windows Live Mail就是其中的典范之作,其提供的完善功能直逼Office Outlook,甚至让用户无法感受到这是一个基于Web的应用程序。让我们通过几个界面截图看看它的功能。图1-6演示了通过拖动将邮件转移到另外一个文件夹,图1-7演示了在邮件列表中单击右键弹出的上下文菜单,图1-8演示了填写收件人时的自动完成列表,图1-9演示了在撰写邮件时即时的拼写检查功能。

Ajax之所以能够实现如此强大的功能,就是因为开发者广泛使用了现有的各种成熟技术,充分挖掘出了它们的潜力,并把它们有机地组合到一起。

图1-6  向Deleted items文件夹拖动邮件

图1-7  邮件列表中单击右键弹  出的上下文菜单

图1-8  “收件人”输入“dflying”        之后弹出的自动完成列表

图1-9  拼写检查功能

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论