1、下载工具包http://dojotoolkit.org/download/,解压后如下图所示:
说明:(1)dijit是dojo中界面控件的总称,每个Dijit控件都是由Dojo类以及控件中使用的图片,CSS等资源文件共同组成;
(2)dojo里面包含核心类dojo.js
2、新建HTML文档,引用dojo.js文件和CSS文件,分两种方式:
(1)在线引用
(2)本地引用:将解压后文件部署到服务器目录,然后本地引用
<link rel="stylesheet"href="http://localhost/arcgis_js_api/library/3.3/jsapi/js/dojo/dijit/themes/claro/claro.css"/>
<scriptsrc="http://localhost/arcgis_js_api/library/3.3/jsapi/js/dojo/dojo/dojo.js"data-dojo-config="asyc:true,parseOnLoad: true,idDebug:true"></script>
注意:1)asyc选项用来通知AMD Loader使用新的、快速的方法加载javascript模块
2)idDebug设置为true可以方便开发时获得适当的警告信息
3)parseOnload已经被淘汰,不建议使用
3、使用(以dijit为例)
在dojo中创建dijit分两种方式:
(1)通过HTML标记以声明方式创建
(2)通过javascript代码动态创建
以第一种方法为例:
// 声明HTML按钮
<button id=”btn1” type=”button” name=”btnName1”>testBtn </button>
// 声明dijit按钮
<button id=”btn2” data-dojo-type=”dijit.form.Button”name=”btnName2”> testBtn2</button>
说明:1)二者区别在于type属性变化
2)dijit.form.Button是dojo中预定义模块,具体类如Button是大写
3)老版本(v1.7之前?)定义为datatype,新版本定义为data-dojo-type(为兼容HTML5),推荐使用新版本
4、访问dijit控件及其属性
(1)想要获取一个特定的dom节点,老方法是通过document.getElementsById(..),dijit中提供了更为简洁的方法,即dijit.byId(id),来获取相应控件的引用。另外,如果创建Dijit控件时使用的Dom节点有id属性,那么这个id就是Dijit控件的id;如果Dom节点没有指定id,那么将会自动为Dijit控件产生一个唯一id。
Var cuBtn = dijit.byId(‘btn2’);
(2)获取dijit控件的某个属性,例如
Var btnName = dijit.byId(‘btn2’).attr(‘name’);
(3)设置dijit控件的某个属性,例如
Dijit.byId(‘btn2’).attr(‘name’,”hehe”);
5、dojo引入模块
dojo中的模块都是可以单独加载、相互独立的部分,通过类似文件路径的字符串来标识模块。例如,在Dojo1.7或更高版本中,my/module/id 是一个模块的标识符(MID)。实际上,这些模块标识符(MID)会直接印射到JavaScript文件,也就是说,my/module/id,将会让Dojo加载器来加载 my/module/id.js 文件中定义的模块。
为了在应用程序中使用和定义模块,Dojo加载器(dojo.js)中定义了两个全局函数:require()——用于加载一个或多个模块,以及 define() ——用于定义一个模块。这两个函数通常需要两个参数:一个MID列表来指定必须加载的模块,以及一个回调函数。
6、dojo事件绑定
使用dojo的connect方法来实现事件的绑定,例如
Dojo.connect(dijit.byId(‘btn2’),’onclick’,clickFunc);
7、丰富的dijit控件集
- 上下文菜单,弹出菜单,按钮式菜单
- 改进的基本表单元素:按钮,下拉框,复选款,单选按钮,文本框,等等。
- 日期和时间选择控件
- 所见即所得富文本编辑器
- 水平和垂直滑动块
- 进度条
- 选项卡、手风琴控件
- 支持拖放功能的树结构
- 对话框,提示框
- 支持调整大小的布局控件
控件扩展:如果在基本的dijit库中没有你需要的控件,dojox(dojo扩展)是另外一个提供Dijit控件的地方,其中有更大量的控件可供选择
8、学习资源
(1)http://dojotoolkit.org/documentation/
(2)http://dojotoolkit.org/api/