1. Dojo详解
1.1. 通用函数
1.1.1. dojo.require
在前面的示例中,其实我们已经看到了dojo.require的使用。它是用来声明将要使用的dojo的组件类型。类似Java中的import语句。
Dojo是把代码分成模块,在表现形式上是以文件目录结构存在的,类似Java的包概念。而每个模块下的Dojo类文件,就可以理解为类似Java类的概念。一般来说,Dojo中的命名规范也是类似Java的,模块(文件夹)多是小写字母;类文件以大写字母开头;属性、函数是以小写字母开头,单词间用大写字母分隔。
如果某个类是不希望被其他脚本访问的,一般以”_”作为前缀。
有时候类A的定义是放在另一个类B的文件中的,如果希望使用类A,只需要调用dojo.require(类A),就可以使用类B了。比如dijit.form.DropDownButton的定义是放在/dijit/form/Button.js中的, 只要执行dojo.require("dijit.form.Button"),就可以使用它,反到是dojo.require("dijit.form.DropDownButton") 不会起什么做用的。
1.1.2. dojo.byId 和 dijit.byId
通过这两个函数的名字可以推断都是通过id来查找,它们的区别在于:dojo.byId是用来查找DOM节点,类似标准DOM的document.getElementById(id)或者IE的document.all[id];而dijit.byId是返回一个dijit的组件实例,包括dijit._Widget以及它的子类的实例。
1.1.3. dojo.addOnLoad
dojo.addOnLoad也是在之前的示例遇到过了,它把在定义在该处的脚本执行延迟到整个HTML页面加载后执行。
1.1.4. dojo.connect
dojo.connect对Dojo系统中事件响应处理很有用处,用于连接事件处理器(某一个函数)到一个元素或者一个对象,事件可以连接到任何属性或对象元素。
在之前的示例中,就是把一个函数连接到该button的onclick事件属性上去,以达到自定义事件的处理的目的。
除此之外,dojo.connect还可以实现当一个function被调用时另一个function也被调用的功能。比如:
var obj1 = { f1: function(){ alert("hello"); }, f2: function(){ alert("world"); } };
dojo.connect(obj1, "f1", obj1, "f2");
|