AJAX设计策略(五)

进行AJAX的时候处理浏览器的不兼容性。客户端JavaScript库类似Dojo toolkit中的那些,隐藏了很多不同浏览器处理AJAX的不同方法。例如,dojo.io.bind()方法请求封装了XMLHttpRequest,可以处理IE创建异步请求时的不同。PrototypeDOM操作提供的对象隐藏了浏览器处理DOM相关操作时的不同。另外,客户端JavaScript库包含了功能退化("graceful degradation")特性,以处理AJAX不能支持的情况-使你不必编写代码来应对那种可能性。

处理一些常见的AJAX问题,比如书签和后退按钮支持。众多的客户端JavaScript库提供书签和后退按钮的支持。例如,你可以通过将dojo.io.bind()changeURL参数设为true就可以轻易的为bookstore2程序添加书签支持。

dojo.require("dojo.io.*");

...

// This function is called after initial timeout that represents the delay

bpui.alone.showPopupInternal=function(popupx, bookId) {

    // retrieve data through dojo call

    var bindArgs = {

 

        url: "../PopupServlet?bookId=" + escape(bookId),

        mimetype: "text/xml",

        load: bpui.alone.ajaxReturnFunction};

        changeURL:true;

 

    // dispatch the request

    bpui.alone.req=dojo.io.bind(bindArgs);

 

 

为这些工具设立的用户社区可以帮助回答疑问。类似Dojo toolkit的著名客户端库拥有著名的用户社区,通过基于社区的论坛和博客提供支持和帮助。另外,Dojo之类的开源库社区参与进行对库的扩展和增强。这包括公司的支持和贡献。例如,Dojo基金会,一个为促进使用Dojo JavaScript而设立的非盈利性组织,获得了IBM Sun Microsystems公司等的赞助和积极协助。

反面

需要一些JavaScript知识。客户端JavaScript库不能排除对JavaScript编码的需要。最多降低了编写JavaScript代码的需要。在更新的bookstore2例子里,使用Dojo toolkit排除了编码创建、配置和使用XMLHttpRequest对象的需要,但你同样要编码调用封装了XMLHttpRequest请求的dojo.io.bind()函数。

可能需要混合和匹配JavaScript库。这可以被看作优点和缺点。如果一个单独的JavaScript库不能给你所需的功能,你可以灵活的从其他的JavaScript库获得另外的功能,从同一个或这另一个工具箱里。不会限制你只能在web应用里使用一个客户端JavaScript库。例如,你可以使用Prototype对象来同服务端进行AJAX通信,使用Dojo toolkit里的窗口部件实现UI。灵活是一件好事。尽管如此,不同的客户端库来源有自己语法结构,所以你需要学习使用这些库的不同方法。

可能无法满足所有的AJAX需求。有这种可能性,客户端JavaScript库不会满足所有的将AJAX置入web应用的JavaScript需要。因此你需要另一种方法来满足其他的需求。

设计策略3:使用客户端框架

AJAX置入web应用的另一种方法是使用客户端框架。有许多客户端框架供你使用,包括JavaServer Faces框架例如Java EE 5 SDK, ICEfaces, Ajax4jsf, Project Dynamic Faces中的那些。同样有其他类型的客户端框架,例如Direct Web Remoting (DWR), the Google Web Toolkit (GWT),他们不是基于JavaServer Faces的。本节将讨论JavaServer Faces的使用。Project Dynamic Faces -- a Variation on Adding AJAX to JavaServer Faces Technology Components一节将讨论Project Dynamic FacesDesign Strategy 5: Go Remote 讨论 DWRDesign Strategy 6: Go All Java Technology 一节讨论GWT

JavaServer Faces,经常被称为JSF,为简化建立丰富的UI web应用而设计。这个技术的核心是一个强大的组件模型。可以提供一系列API表现UI组件并管理它们的状态。这些API也为开发者提供编程处理组件的事件,转换和验证输入数据的方法。JavaServer Faces UI组件实际上是服务端的组件。它们在服务端运行并在客户端呈现,可以响应客户端的事件。

 

使用JavaServer Faces的好处之一是它允许页面作者可以在自己的页面上使用UI组件而不必知道组件工作的细节。典型的,这些组件在JSP页面上使用JSP标记-虽然这不是表现组件的唯一方式。对页面作者来说,在页面里包含JavaServer Faces UI组件与使用JSP标记一样简单。JavaServer Faces核心组件的JSP标记库被作为该技术的标准部分提供。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值