Dojo   发布时间:2022-04-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了掌握 Dojo 工具包,第 1 部分: Dojo 入门简介大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

伴随 Web 2.0,Ajax 和 RIA 的热潮,各种 Ajax 开发工具包如雨后春笋般蓬勃发展,Dojo 正是这些工具包中的佼佼者。Dojo 为富互联网应用程序(RIA) 的开发提供了完整的端到端的解决方案,包括核心的 JavaScript 库,简单易用的小部件(Widget)系统和一个测试框架,此外,Dojo 的开源开发社区还在不停地为它提供新的功能

Ajax 资源中心

请访问 Ajax 资源中心,这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。

Dojo 是一个 JavaScript 实现的开源 DHTML 工具包。它是在几个项目捐助基础上建立起来的(nWidgets,f(m),Burstlib) 。 Dojo 的最初目标是解决开发 DHTML 应用程序遇到的一些长期存在的历史问题,现在,Dojo 已经成为了开发 RIA 应用程序的利器:

  • Dojo 让您更容易地为 Web 页面添加动态能力,您也可以在其它支持 JavaScript 的环境中使用 Dojo ;
  • 利用 Dojo 提供的组件,您可以提升 Web 应用程序的可用性和交互能力;
  • Dojo 很大程度上屏蔽了浏览器之@L_197_14@差异性,因此,您可以不用担心 Web 页面是否在某些浏览器中可用;
  • 通过 Dojo 提供的工具,您还可以为代码编写命令行式的单元测试代码
  • Dojo 的打包工具可以帮助您优化 JavaScript 代码,并且只生成部署应用程序所需的最小 Dojo 包集合。

接下来,我们看看 Dojo 是如何组织这些功能组件的。

Dojo 体系架构

Dojo 的体系架构如图1所示,总体上来看,Dojo 是一个分层的体系架构。最下面的一层是包系统,Dojo API 的结构与 Java 很类似,它把所有的 API 分成不同的包(package),当您要使用某个 API 时,只需导入这个 API 所在的包。包系统上面一层是语言库,这个语言库里包含一些语言工具 API,类似于 Java 的 util 包。再上一层是环境相关包,这个包的功能是处理跨浏览器的问题。


图 1. Dojo 体系架构图

Dojo 大部分代码都位于应用程序支持库,由于太小限制,图 1 中没有列出所有的包。开发人员大部分时候都在调用这个层中的 API,比如,用 IO 包可以进行 Ajax 调用

最 上面的一层是 Dojo 的 Widget 系统,Widget 指的是用户界面中的一个元素,比如按钮、进度条和树等。 Dojo 的 Widget 基于 MVC 结构。它的视图作为一个 Template(模板)来进行存放,在 Template 中放置着 HTML 和 CSS 片段,而控制器来对该 Template 中的元素进行操作。 Widget 不仅支持自定义的样式表,并且能够对内部元素的事件进行处理。用户页面中只需要加入简单的标签就可以使用。在这一层中,存在数百个功能强大的 Widget 方便用户使用,包括表格、树、菜单等。

常用包介绍

Dojo 1.1.1 提供了上百个包,这些包分别放入三个一级命名空间:Dojo,Dijit 和 DojoX 。其中 Dojo 是核心功能包,Dijit 中存放的是 Dojo 所有的 Widget 组件,而 DojoX 则是一些扩展或试验功能,DojoX 中的试验功能在成熟之后有可能在后续版本中移入到 Dojo 或 Dijit 命名空间中。

由于 Dojo 包种类繁多,下面只列举了最常用的一些包及其功能,以方便读者有个初步了解或供以后查阅。

包名 功能


dojo.io 不同的 IO 传输方式。 script、IFrame 等等;
dojo.dnd 拖放功能的辅助 API 。
dojo.String 这个包可以对字符串进行如下的处理:修整、转换为大写、编码、esacpe、填充(pad)等等;
dojo.date 解析日期格式的有效助手;
dojo.event 事件驱动的 API,支持 AOP 开发,以及主题 / 队列的功能
dojo.BACk 用来撤销用户操作的栈管理器;
dojo.rpc 与后端服务(例如理解 JSON 语法的 Web 服务)进行通信;
dojo.colors 颜色工具包;
dojo.data Dojo 的统一数据访问接口,可以方便地读取 XML、JSON 等不同格式的数据文件
dojo.fx 基本动画效果库;
dojo.regexp 正则表达式处理函数库;
dijit.forms 表单控件相关的 Widget 库;
dijit.layout 页面布局 Widget 库;
dijit.popup 这个包用于以弹出窗口方式使用 Widget ;
dojox.charTing 用于在页面上画各种统计图表的工具包;
dojox.collections 很有用的集合数据结构(List、Query、Set、Stack、Dictionary...);
dojox.encoding 实现加密功能的 API(Blowfish、MD5、Rijndael、SHA...);
dojox.math 数学函数(曲线、点、矩阵);
dojo.reflect 提供反射功能函数库;
dojox.storage 将数据保存在本地存储中(例如,在浏览器中利用 Flash 的本地存储来实现);
dojox.xml XML 解析工具包;

Dojo 的安装

Dojo 的安装不需要特别的环境和配置,只需要将 Dojo 包下载,解压并将其放在自己喜欢的位置就可以。

  • 第一步,下载 Dojo 包。



    图 2. Dojo 包的下载


    登陆 Dojo 官方网站的下载页面(参见 参考资料),点击其上如图 2 中所示的“ Download Now ”按钮。也可以选择点击页面右边的“All releases ”,查看当前 Dojo 所有的版本,并尝试下载使用。

  • 第二步,解压下载下来的软件包,并将其放在合适的位置。

    在 Windows 环境下,可以使用 WinRAR 将下载下来的 Dojo 包解压。在 Linux 环境下,最好是下载后缀名为 tar.gz 的包,可以使用“tar -zxvf Dojo 压缩包文件”命令解压 Dojo 包。

    如 果只是尝试使用 Dojo,不需要牵涉到与服务器端的通信,可以将 Dojo 放在任何方便的位置。但最好这个位置能方便其测试页面引用 Dojo 。比如假设测试页面 test.html 的放置位置为 D:/test/test.html,则 Dojo 包最好也放置为 D:/test/dojo,以方便 test.html 引用 Dojo 。如果牵涉到 Dojo 在服务器端的放置,则 Dojo 最好放在对应服务器的 Web 根目录下。比如假设目前 Appach 服务器的 Web 访问目录为“/home/web/webapp/ ”,则 Dojo 包最好直接放置于其下,以避免出现跨域问题和方便服务器上的多个 Web 项目引用 Dojo 。

  • 第三步,测试 Dojo 是否运行正常。



    图 3. 检测 Dojo 是否运行正常


    使用浏览器打开 dojo_path/dijit/themes/themeTester.html,如果页面的运行效果如图 3 所示,则说明 Dojo 运行正常。

需要说明的是 dojo_path 在本系列文章中有两个不同的代表意义。

  • 第一表示 Dojo 包在系统中所处的绝对位置。例如如果 Dojo 包中 dojo.js 文件在系统中的位置为 D:/test/dojo/dojo/dojo.js,则此时 dojo_path 所代表的为 D:/test/dojo。
  • 第二表示页面与 Dojo 包的相对位置。例如如果页面的位置为 D:/,而 Dojo 包的位置为 D:/test/ 。要在页面中使用 Dojo,首先需要引入 Dojo,其实际引入的语句为 <script type="text/javascript" src="dojo_path/dojo/dojo.js" djConfig="parSEOnLoad:true" ></script> 。这里的 dojo_path 表示的是页面与 Doj 包的相对位置,因此其所代表的为 ./test/ 。对于本系列后面章节的实例,将会出现很多使用 dojo_path 的情况,如果要运行这些实例,请将其中的 dojo_path 替换为真实情况的值。

除 了通过下载 Dojo 包来使用 Dojo 以外,Dojo 组织还提供了另外一种方法来引入 Dojo 进行使用。如果不希望下载 Dojo 包而尝试对 Dojo 的使用,可以直接通过引入美国一个在线服务器主机上的 Dojo 来实现。与下载 Dojo 使用的不同点只是 dojo_path 应替换为“http://o.aolcdn.com/dojo/1.0.0”。例如要引入 dojo.js 文件,则其实际引入语句为:

<script 
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.0.0/dojo/dojo.js"
djConfig="parSEOnLoad: true">
</script>

Dojo 版的 Hello World

前面,我们对 Dojo 的下载和安装进行了介绍。接下来,我们将通过一个 Dojo 版的 Hello World 示例来了解如何初步使用 Dojo 工具包。本节中,将通过一个客户端登陆验证的例子来进行讲述。


清单 1. 客户端登陆验证示例
				
<html>
<head>
<title>test</title>
<script type="text/javascript"
src="dojo_path/dojo/dojo.js"
djConfig="parSEOnLoad: true"></script>
<style type="text/css">
@import "dojo_path/dijit/themes/tundra/tundra.css";
</style>
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.button");
function init()
{
dojo.connect(dijit.byId("mybutton").domNode,"onclick","login");
}
function login()
{
if( dijit.byId("myname").value=="goodguy" &&
dijit.byId("mypassword").value=="goodgoodstudy")
alert("Dojo World welcome you!");
else
{
dijit.byId("myname").SETVALue("");
dijit.byId("mypassword").SETVALue("");
alert("Dojo does not like you!");
}
}
dojo.addOnLoad(init);
</script>
</head>
<body class="tundra">
UserName:
<input type="text" length="20" id="myname" dojoType="dijit.form.TextBox">
<br>
password:
<input type="password" length="20" id="mypassword" dojoType="dijit.form.TextBox">
<br>
<div id="mybutton" dojotype="dijit.form.button">Submit</div>
</body>
</html>

首先建立一个 test.html 的文件,在将清单 1 中的 dojo_path 根据自己的实际情况进行修改后,把清单 1 中的代码拷贝到 test.html 中,并双击运行。在输入框中分别输入“ goodguy ”和“ goodgoodstudy ”,点击 Submit 按钮则会得到一个“ Dojo World Welcome you !”的一个弹出窗口。如果在两个输入框中输入的是其它内容,则点击 Submit 按钮就会得到“ Dojo does not like you! ”的一个弹出窗口。

下面是对关键代码的解释:

  • djConfig="parSEOnLoad: true" 表示在页面加载完成以后,启用 Dojo 的解析模块对页面中的 Dojo 标签属性(Dojo 标签属性是指由 Dojo 定义的一些标记,这些标记只有在被处理以后,才能为浏览器识别执行)进行解析。djConfig 是使用 Dojo 页面一个全局配置参数。通过对这个参数不同的赋值,可以控制页面中 Dojo 的解析模块是否运行, Dojo 的调试模块是否工作等。

  • @import "dojo_path/dijit/themes/tundra/tundra.css" 表示引入 Dojo tundra 风格的层叠样式表。

  • dojo.require("dojo.parser") 表示引入 Dijit 的解析功能模块。该模块将会把 Dojo 标签属性替换成浏览器可以识别执行的标记。需要与 djConfig="parSEOnLoad:true" 相区别的是,djConfig="parSEOnLoad:true" 表示确定在页面加载完成以后执行解析功能,但解析功能模块的引入要靠 dojo.require("dojo.parser") 来实现。

  • dojo.require("dijit.form.TextBox")dojo.require("dijit.form.button") 表示引入 Dojo 风格的文本输入框和按钮的功能模块。

  • dojo.connect(dijit.byId("mybutton").domNode,"login") 表示将按钮的点击事件和 login 函数联系起来,当点击 id 为 mybutton 的按钮时,执行 login 函数

  • dijit.byId("myname").SETVALue("") 表示调用 id 为 myname 的 Dojo 文本框的 SETVALue 函数,将文本框里面的内容清为空。

  • <input type="text" length="20" id="myname" dojoType="dijit.form.TextBox"> 中的 dojoType="dijit.form.TextBox" 表示在页面中文本输入框是 Dojo 风格的。需要注意的是,通过声明 dojoType="dijit.form.TextBox" 这种方式来实现某些 Dojo 功能的使用,其表现形式上如同声明一个 HTML 标签属性(如同 width="10px"),因此在本文中称其为 Dojo 标签属性。在页面加载完成以后,Dojo 的解析模块会将 Dojo 标签属性转化为浏览器能够识别执行的标记

如果读者希望了解如何写出自己的第一个基于 Dojo 的 Ajax “ Hello World ”,可参阅本系列文章的第二部分。

Dojo 的调试

就本系列文章写作期间,还没有专门用于支持 Dojo 调试的工具。但虑到 Dojo 的本质是一套 Javascript 的 Toolkit,因此使用 Javascript 的调试工具也能较好的满足 Dojo 应用调试的需求。

目 前较为常见的浏览器有 IE,Firefox 和 Safari 。但这些浏览器在标准上都有一些差异,因此就目前的情况找到一个能在各个浏览器中通用的优秀调试工具显然不大可能。不同的浏览器往往有不同调试工具。因为 笔者在实际的工作中最为熟悉的调试工具是 Firefox 下的 Firebug 。本文将以 Firebug 作为最主要的 Dojo 应用调试工具进行讲述。

安装 Firebug

  • 第一步,点击 Firefox 浏览器上的“工具”选项,然后点击“附加软件”,在弹出的小窗口中,点击右下角的“获取扩展”选项,如图 4 所示。



    图 4. 获取扩展


  • 第 二步,在点击“获取扩展”选项后,打开的页面搜索 Firebug,在搜索结果页面中,下载 Firebug 。需要注意的是,Firebug 的版本要与 Firefox 的版本相兼容。如果要查看自己 Firefox 的版本,可通过点击浏览器“帮助”选项下“关于 Mozilla Firefox ”选项。

  • 第三步,由于目前 Firebug 直接支持的是 Firefox3.0,而本书作者的 Firefox 是 Firefox2.0,因此需要从 Firebug 的老版本中找到合适的 Firebug 版本。 Firebug 的下载网页会判断您的浏览器版本。如果尝试下载安装不合适的 Firebug 版本时,其链接是失效的。与本书作者浏览器版本相对的最佳 Firebug 下载页面如图 5 所示。其余的一些老版本的 Firebug,只要可以下载的,一般来说,也就是可以使用的。



    @L_404_15@


了解 Firebug 调试功能

结束语

现在您已对 Dojo 的体系结构有了初步的了解,并且已经写了第一下 dojo 应用。另外,相信您现在已经掌握了 Dojo 的调试方法。可以说,您已经开始步进了 Dojo 的大门,下期文章将教您如何使用 Dojo 进行 Ajax 调用

大佬总结

以上是大佬教程为你收集整理的掌握 Dojo 工具包,第 1 部分: Dojo 入门简介全部内容,希望文章能够帮你解决掌握 Dojo 工具包,第 1 部分: Dojo 入门简介所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。