目 录
目 录... 1
第一章 Ajax开发模式介绍与什么是Dojo. 3
一、 Web应用编程技术概述... 3
1. Web编程工具简介... 3
2. 使用Ajax开发Web应用... 4
a. 什么是Ajax?. 4
b. MVC与Ajax. 4
c. Ajax开发工具简介... 5
二、 什么是Dojo. 5
第二章 JavaScript语法简介... 6
第三章 Hello,Dojo! 6
一、 Hello,JavaScript! 6
二、 Hello,Dojo! 7
三、 Dojo开发步骤... 10
第四章 Dojo的结构体系... 10
一、 Dojo的包机制... 10
二、 Dojo的层次... 11
第五章 常用Dojo类库简介... 12
一、 语言工具类(lang.*) 12
1. common. 12
2. array. 14
3. assert 16
4. declare. 16
5. extras. 16
6. func. 16
7. Lang. 16
8. type. 16
9. repr 16
二、 集合类(collections.*) 16
1. Collections. 16
2. ArrayList 16
3. SortedList 17
4. SkipList 17
5. Queue. 17
6. Dictionary. 17
7. Stack. 17
8. Set 17
9. Graph. 17
三、 事件处理(event.*) 17
四、 用户界面包... 17
1. 拖放支持(dnd.*) 17
2. 动画支持(animation.*,lfx.*) 17
五、 URL与导航... 17
六、 远程通信(io.*,rpc.*) 17
七、 国际化支持... 17
八、 数据存储与查询... 17
九、 其他... 17
第六章 Dojo Widgets. 17
第七章 深入Dojo. 17
第八章 Web应用的整体考虑... 17
第九章 Dojo应用实例... 17
第一章 Ajax开发模式介绍与什么是Dojo
一、Web应用编程技术概述
1. Web编程工具简介
随着20世纪80年代互联网的崛起,基于Internet的编程技术也在飞速发展。迄今为止,Web应用作为最成功的技术,已经占据了互联网应用开发的绝大部分市场。Web最早是瑞士CERN研究中心的一组研究人员开发的,用于Internet上的信息交换。后来,Web技术被发现具有极大的发展潜力,人们遂致力于其开发并广为应用。
Web是一种C-S(客户机-服务器)结构的架构,使用HTTP(超文本传输协议)实现客户端(Client)与服务器端(Server)的连接。在服务器端,HTTP格式的信息被服务器程序(Server)获取并解析、处理,处理后的结果再以HTTP格式返回;在客户端,信息以HTML(超文本标记语言)呈现在Web浏览器中。
在Web编程语言的发展历史上,也有两条分支,一是以php、asp、jsp为代表的服务器端脚本语言,另一分支则是以JavaScript和VBScript为代表的客户端脚本语言。
在服务器端,近10年来涌现出了许多优秀的脚本语言,如PHP、ASP等,PHP是一种易于学习和使用的服务器端脚本语言,使用PHP,开发者可以很容易的进行数据库连接、文件访问等功能,PHP由开源组织PHP小组提供支持,用户可以免费下载并使用,新的版本PHP5已经发展成一门面向对象的编程语言,要构建一个中小型的网站,PHP是一个很好的选择。ASP是Microsoft公司开发的一种以Visual Basic语言为基础的脚本语言,ASP对同是Microsoft公司的VBScript提供了无缝的支持,不过ASP只对Microsoft的浏览器Internet Explorer提供支持,到目前为止,Microsoft已经发布了其.NET架构,.NET提供了ASP.NET,开发者可以很方便地使用Microsoft的Visual Studio.NET开发Web程序。此外,Sun MicroSystem公司的Java语言和J2EE架构为服务端提供了完整的方案,基于J2EE架构,还有许多开源的Web框架,如Apache的Struts、OpenSymphony的WebWork和SpringFrames的Spring。
在客户端,除了上述脚本语言动态生成HTML外,还有嵌入到HTML中的客户端脚本语言VBScript和JavaScript。两者都提供了对用户操作的相应、HTML元素的操纵和特殊效果的实现。其中,VBScript是Microsoft公司以Visual Basic为基础的脚本语言,由于同是Microsoft的产品,VBScript提供对Windows的高级控制,如修改注册表等。JavaScript是另一门脚本语言,与VBScript只支持Internet Explorer不同,JavaScript支持绝大部分的浏览器。首先由Netscape的第二版浏览器推出,紧接着Microsoft在其Internet Explorer 3.0中也提供了JavaScript的支持,此后,其他的浏览器也陆续开始了对JavaScript的支持。然而,由于各浏览器供应商均对JavaScript有自己独特的支持,开发人员在编写JavaScript程序时需要考虑对不同浏览器的支持。
本书所要介绍的Dojo就是一项基于JavaScript的开源技术。Dojo的开发者门在进行设计时,充分考虑了跨浏览器的支持。
2. 使用Ajax开发Web应用
Ajax是Asynchronous JAvascript + Xml的简称。顾名思义,Ajax是由JavaScript作为控制语言,由XML作为数据描述格式,并提供非同步操作的Web客户端处理模式。
本书介绍的Dojo就是一个Ajax框架,其核心就是一个支持同步和异步的数据连接和处理器。
b. MVC与Ajax
模型-视图-控制器(Model-View-Controller)是一种应用程序结构,根据其英文首字母简称为MVC。MVC结构提供了一种按功能对所要处理的数据模型和数据展现形式进行分离的方法,使用MVC可以减少应用中各模块的耦合度,同时还可以分离开发人员的职能,使项目开发中不同的角色可以各尽其职。关于MVC详情请查阅其他资料。
然而,由于HTTP协议是无状态的,如果使用MVC结构,视图层的处理只能以页面为单位,这就意味着,当模型的一小部分数据改变时,就可能需要刷新整个视图。这无疑会大大地降低用户体验,
Ajax的出现彻底解决了这个问题。Ajax使得页面数据处理粒度从页面级细化到页面元素级,利用模拟请求的XmlHttpRequest对象向远端请求资源,XmlHttpRequest将获得的数据以纯文本形式或Xml形式[1]返回给JavaScript进行处理,JavaScript利用其强大的DOM(文档对象模型)功能对Html页面直接进行处理,使用户无需刷新页面即可获得新的信息。Ajax还可以异步获取数据,用户无需等待操作完成即可对页面继续操作。
使用Ajax+MVC可以很好的控制住页面更新粒度,用户需要将当前视图完全转移到另一个时,可以直接使用MVC控制其视图变化,当用户仅仅需要改变某一视图的辅助数据时,就可以使用Ajax方式。
某些Ajax框架甚至支持对服务器端的代码(如Java)进行直接远程调用,开发者甚至可以抛弃MVC架构,直接使用类似桌面应用程序开发方式(如Visual Basic)进行Web应用开发。
c. Ajax开发工具简介
DWR:DWR(Direct Web Remoting)是一个WEB远程调用框架。利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).它的最新版本DWR0.6添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作。
Struts AjaxTags:这个AjaxTags是在现有的Struts HTML标签库上添加对AJAX技术的支持。这是一种MVC与Ajax结合的方式。
GWT:Google Web Toolkit (GWT) 是一个Java软件开发框架用于开发类似于Google Maps和Gmail的AJAX应用程序. 你可以用Java编程语言开发你的界面,然后用GWT编译器将Java类转换成适合浏览器执行的JavaScript与HTML。
Dojo:Dojo是由几个开源项目(nWidgets, Burstlib, f(m))共同贡献的,旨在解决历史上长期存在的、阻碍了人们使用动态Web程序进行开发的问题。
在Dojo的官方网站上,dojo手册是这样写的[2]:
//TODO 在此翻译。
第二章 JavaScript语法简介
本章先使用JavaScript打印出“Hello,JavaScript!”,再以Dojo方式打印出相同的信息,并给出解决Dojo中文化的两种方法,最后总结使用Dojo开发Web应用的步骤。
本节给出一个传统JavaScript的例子,简要说明JavaScript的部分语法,并为之后的Dojo例子提供比较。即使您熟悉JavaScript的使用,也可以粗略浏览此节,直接阅读第二节的内容。
在本例中,我们首先创建一个JavaScript类,
这个例子由两个文件组成,分别为testJavaScript.html和testJavaScript.js,html文件中引用了js文件的内容,js文件将打印出”Hello,JavaScript”字样。
testJavaScript.html:
<html>
<head>
<script src=”testJavaScript.js”></script>
</head>
<body>
</body>
</html>
testJavaScript.js:
function HelloObject(){
this.message=”Hello,JavaScript”;
}
HelloObject.prototype.sayHello(){
document.writeln(this.message);
}
window.attachEvent("onload",initPage);//注释
function initPage(){//实现该函数
var myObject=new MyObject();//实例化一个对象
myObject.sayHello();
}
示例 1
我们看testJavaScript.js,1-6行,我们定义了一个类MyObject,并定义了一个属性message和一个方法sayHello(),然后在第7行,我们调用了内嵌对象window的attachEvent方法为系统的onload事件注册了一个方法initPage,继而实现了该方法:生成一个新的MyObject对象,并调用其sayHello方法。
这个例子到此就完成了,当我们打开testJavaScript.html页面时,就会自动显示”Hello,JavaScript”消息。在这个例子中,我们扩展了JavaScript函数原型定义了一个类,并在页面载入时使用了这个类。
请注意,这个例子虽然实现了功能,但存在着许多局限性:为了与页面载入事件绑定,我们使用了attachEvent方法,而这个方法只对Internet Explorer5.0以上才有效,如果要使用其他的浏览器,如NetScape,Mozilla FireFox,也许我们应该使用addEventListener方法来替代,这意味着,如果这个Web程序需要被多个浏览器访问,我们不得不使用如下的代码:
If(isIE()){
window.attachEvent(…);
}else{
window.addEventListener(…);
}
在JavaScript的使用过程中,这样的不和谐性还有很多,如在获取一个页面元素时,我们也许会使用document.all方法,而这也是Internet Explorer独有的。
事实上dojo是非常易于安装的,只需将整个目录复制至当前的工程,然后在html页面内引入dojo.js即可。介于第一次使用,我们将dojo的配置步骤列举于下:
1.