首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java
CSSDOM、异步请求和JavaScript,这些就是Ajax所需要的全部组件。然而,即使将这些东西全部用上也并不意味着就是Ajax,至少我们在本书中正在描述的场景是这样。

我们已经在第1章中讨论了传统Web应用和Ajax应用的区别,这里我们再回顾一下。在传统的Web应用中,用户的工作流通过服务器的代码来定义,用户从一个页面切换到另一个页面,正在进行的工作不时被重新加载整个页面而打断。重新加载页面时,用户无法继续工作。而在Ajax的应用中,工作流至少有一部分是在客户端应用中定义的,当用户正在工作的时候与服务器的通信悄悄地发生在后台。

在这两个极端之间,是广大的灰色地带。一个Web应用可能一方面遵循传统的方法交付一系列的离散页面,而与此同时,每个页面又可能巧妙地使用着CSSDOMJavaScript和异步请求来使用户与页面的交互更加流畅。当然,为了切换到下一个页面,这其中肯定免不了会有一些打断用户工作的页面刷新。也可能在工作流的某个位置,JavaScript应用会显示一个类似于传统Web页面的弹出式窗口。Web浏览器是一个灵活和宽容的环境,你可以在一个应用中混合使用Ajax和非Ajax的功能。

Ajax显得与众不同的地方不是它所使用的技术本身,而是通过使用这些技术所带来的新的交互模型。我们所习惯的传统Web交互模型并不适合于独占式的应用,只有打破了这种交互模型,新的可能性才会慢慢浮现出来。

至少可以在两个层次上使用Ajax,在传统的基于页面的方法和新型的Ajax方法之间有一些过渡方案。最简单的策略是开发基于AjaxUI组件,它们大多是自包含的,使用少量的导入语句和脚本就可以添加到Web页面之中。股票行情、交互式日历、聊天窗口就是这样一类典型的UI组件。另外一个层次是将类似于应用的功能嵌入在类似于文档的Web页面中(图2-6)。Google的大部分Ajax应用(参见1.3节)都适用于这种模型。例如,Google Suggest的下拉列表和Google Maps的地图UI组件,它们都是以交互式组件的形式嵌入在页面之中。

2-6  一个简单的Ajax应用工作起来仍然像是一个Web页面,交互功能嵌入在页面之中

如果想要以更加激进的方式应用Ajax,我们还可以总结出另外一种模型,开发一个宿主应用,其中既可以容纳类似于应用的组件,也可以容纳类似于文档的组件(图2-7)。这种方法更加类似于一个桌面应用、窗口管理器或者桌面环境。GoogleGMail适用于这个模型,个别的消息作为文档显示在交互式地类似于应用的架构中。

2-7  在一个更加复杂的Ajax应用中,整个应用就是一个交互式的系统,类似于文档的内容可以通过编程或者声明的方式来加载

在某种方式上,学习Ajax技术是很容易的部分。有趣的挑战在于学会在开发过程中如何很好地对它们进行综合应用。我们习惯于将Web应用看作是一组剧情故事板,我们使用一个预先确定的脚本让用户在这些故事板中转来转去。而如果给Web应用加入一些类似于应用的功能,我们可以为用户提供对于业务领域问题更加细致的处理能力,这使得正在工作的用户感到更加自由。

为了从更大的灵活性中获得好处,必须要对我们的编程习惯多问几个为什么。HTML表单是用户输入信息的唯一方式吗?我们是不是要将所有的用户界面都声明为HTML?我们能不能在用户按下某个键或者移动鼠标时,与服务器进行联系,就像在传统的用户点击鼠标时所做的那样?在信息技术日新月异的今天,我们非常强调学习新的技能,但是放弃老的习惯至少也同样重要。

 

查看所有评论(0)条】

最近评论



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