幸运的,新的调试工具例如
Mozilla Firebug
调试器正在出现,以使调试
AJAX
代码更加简单。
GWT
也提供调试客户端和服务端代码的环境。请看本文的
Design Strategy 6: Go All Java Technology
部分。
暴露
JavaScript
代码-一个潜在的安全问题。在
web
应用客户端上的的
JavaScript
代码是看的见的。包括黑客在内的任何人可以看见并分析浏览器页面上的源代码。危害会随之而来。他们可能试图相反的操纵你的
web
应用。他们甚至可以从你的
web
应用上劫持
XMLHttpRequests
并返回破坏性的响应。
设计策略2:使用客户端JavaScript库
无须为
AJAX
应用编写所有的客户端
JavaScript
代码,你可以利用
JavaScript
库的优势,他们提供
AJAX
功能,例如
: Dojo toolkit, Prototype, Script.aculo.us,
和
Rico
。要找其他的,请见
Survey of AJAX/JavaScript Libraries.
Dojo toolkit
是一个开源的
JavaScript
工具箱,它的库和
API
可以轻松的将
AJAX
置入
web
应用。例如,
dojo.io
库抽象化同服务端的
AJAX
通信,所以隐藏了底层的
XMLHttpRequest
操作。使用
XMLHttpRequest
库,
AJAX bookstore2
应用程序中的
bpui.alone.showPopupInternal()
函数将会变成这样:
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};
// dispatch the request
bpui.alone.req=dojo.io.bind(bindArgs);
dojo.require()
函数动态的为指定的库装载
JavaScript
代码,这里是
dojo.io
库。更新的
bpui.alone.showPopupInternal()
函数使用
dojo.io.bind()
方法向服务端提交一个异步的请求。
bind()
方法包装了
XMLHttpRequest,
因此你不必再像
do-it-yourself
方式那样创建和配置
XMLHttpRequest
对象。你需要为
bind()
方法提供以下参数:与之通话的服务端组件的
URL
,响应的格式,和回调函数标识。你也可以指定其他的参数,如
error
。
Dojo toolkit
中的其他库提供多种
API
,可以使编码变得简单,例如:动画,
DOM
操作,拖拽支持,
UI
效果。另外,工具箱提供完善的事件处理机制。尽管如此,
Dojo toolkit
由于他的内置窗口部件库而闻名,你可以预创建
UI
组件,然后将它插入
web
应用并根据需要定制它。
Dojo
窗口部件能让你创建自己的部件。
Prototype
是一个
JavaScript
框架。它提供一个库,库的构件包含能使
JavaScript
应用简易化的对象。其中一个构建提供一个
AJAX
对象,类似
Dojo toolkit
中的
dojo.io
库,封装了
XMLHttpRequest
对象并隐藏了
XMLHttpRequest
操作。另一个构件提供一些对象和方法可以使操作
DOM
更简单。
Script.aculo.us
和
Rico
是在
Prototype
的基础上建立的。二者都提供支持
AJAX
,拖拉,
UI
效果,和其他插入
web
应用功能的
JavaScript
库。
使用客户端JavaScript库的正面和反面
这里有一些使用客户端
JavaScript
库建立
AJAX web
应用的正面和反面。
正面
隐藏底层细节。
Dojo toolkit
中的
dojo.io
库、
Prototype
库,此类库都封装了
AJAX
的一些细节。包括创建和配置
XMLHttpRequest
对象,和在这些对象上执行的一些操作。这些库允许你在一个更高、更抽象的层次上编码,使你不必提供更多的细节代码。
减少
JavaScript
编码的需要。
Dojo toolkit DOM manipulation
或者
Prototype DOM manipulation
之类的库提供例行程序,可以方便的被使用并且比起他们的等价的
JavaScript
库需要更少的代码。另外,组装类似
Dojo toolkit
里预建的窗口部件要比编写
JavaScript
功能简单的多。