http://dojo.jot.com/WikiHome/Tutorials/HelloWorld
还有dojo book
有哪些开发工具。不同浏览器,不同辅助开发工具。
调试。
用Fiddler查看客户端到服务器之间的通信,可以诊断Ajax调用慢的原因。
检查JS语法的方法
调试的方法
优化JS代码。找出运行慢的地方,进行改善。
debugAtAllCosts ???
Dojo.profile 可以检查function运行花费了多少时间。
Function(){
Var startTime = new Date();
//
Dojo.debug("Total time: "+(new Date() - startTime));
}
在D盘temp/保留3个月目录中,按Tutorial说明进行实验。
Dojo.addOnLoad(function_name)
页面载入后(马上)运行。页面初始处理,比如给元素绑定事件,因为浏览器处理显示dojo元素后,才能进行事件绑定。
Dojo.widget.byId('widgetId_name')
对应到带 widgetId='attribute_name' 属性的dojo元素
如果是一般的带 id='id_name' 属性 的普通HTML元素。
可以用dojo.byId('id_name')
dojo元素
需要预先申明dojo.require("dojo.widget.Button")
<button dojoType='Button' >button_name</button>
对已有元素绑定事件处理函数
需要预先申明
Dojo.require("dojo.event.*")
用的时候,这样
Dojo.event.connect(element_obj,'event_name','function_name')
比如:
Dojo.event.connect( $(' '), 'onClick', 'sayHello')
绑定对象方法还有一种用法。就是把一个对象(元素对象或自定义对象)的一个方法绑定到另一个对象的一个方法上,即一个对象的方法运行结束后,马上继续运行另一个对象的方法。
比如
Dojo.event.connect(obj1,'func1',obj2,'func2');
obj1的函数func1运行完后运行obj2的函数func2
好像说每用一次dojo.event.connect就会有一个连接。
另外也有方法,可以取消对象上方法的绑定。
直接用document.getElementById不能获取dojo元素对象。因为dojo自己内定了ID值,就是说你即使设置了ID属性,dojo会转换成它自己的ID属性值,因此你直接用这个ID属性来取,会取不到。
利用dojo声明一个对象,注意不是类。
Var obj = {
Counter : 0, //成员属性
Foo : function(){ //成员方法foo
Alert("foo");
This.counter++; //引用成员变量
}
Bar : function(){
Alert("bar")
This.counter++;
}
};
Dojo.io 包-函数库
包含XMLHTTP功能。
也就是用这个包就可以做Ajax请求了。
Dojo.io.bind()就是一个异步请求。
Dojo.io.bind()的参数通常是一个匿名对象(anonymous object)
比如:
Dojo.io.bind( {
Url : "http://xxxxxx",
Load : function(type, data, evt){
//do something
}
Mimetype : "text/plain"
});
这个调用的意思是,调用某个URL请求,返回后自动调用load 那行的函数
也可以加一个错误处理函数。
比如:
dojo.io.bind({
url: "http://foo.bar.c",
load: function(type, data, evt){},
error: function(type, error){ },
mimetype: "text/plain"
});
专门对请求超时的处理
dojo.io.bind({
url: "http://foo.bar.c",
load: function(type, data, evt){},
error: function(type, error){ },
timeoutSeconds : 2,
Timeout : function(type, data, evt){ }
});
没有设置timeoutSeconds属性时,默认为0,表示“一直等”
还可以指定请求的method
Dojo.io.bind( {
Url : "http://xxxxxx",
Load : function(type, data, evt){
//do something
},
Method : "get"
});
Dojo.io.request 类的对象?
要能对ajax请求有错误处理。比如404页面没有找到、服务无效,或者因为某些原因超时。因为ajax是后台处理,如果没有后台错误处理,前台页面就会显示错误(某种程度上的错误,比如载入画面总是显示,而没有数据载入。)
Module dojo的逻辑单元。和java的类包一样,另外自身也有构造器,和成员函数。
比如 dojo.html module包含了很多function。如dojo.html.getContentBox()
一个module在一个js 文件中,有时也分多个文件。
定义一个资源。包。
Dojo.provide(" ")
Widget namespace
widget我的理解一般是些可视化控件。
也可以自己定义。比如放在markpeak 的namespace下。 比如"markpeak:Button"就是指自己定义的按钮控件。"dojo:Button"就是dojo的按钮控件。
有几种使用dojo widget的方法
方法一:<input dojoType="sss" widgetId="sss"></button>
方法二:<input class="dojo-ComboBox" value="default" dataUrl="comboBoxData.js">
方法三:<dojo:ComboBox value="default" dataUrl="comboBoxData.js">
dojo的组合框可以根据输入的关键字列出匹配的所有选项。