您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > Dojo+API1.0
DOJOAPI中文参考手册,附加注解实例Dojo体系架构总体上来看是一个分层的体系架构。最下面的一层是包系统,DojoAPI的结构与Java很类似,它把所有的API分成不同的包(package),当您要使用某个API时,只需导入这个API所在的包。包系统上面一层是语言库,这个语言库里包含一些语言工具API,类似于Java的util包。再上一层是环境相关包,这个包的功能是处理跨浏览器的问题。Dojo体系架构图Dojo大部分代码都位于应用程序支持库,由于太小限制,图中没有列出所有的包。开发人员大部分时候都在调用这个层中的API,比如,用IO包可以进行Ajax调用。最上面的一层是Dojo的Widget系统,Widget指的是用户界面中的一个元素,比如按钮、进度条和树等。Dojo的Widget基于MVC结构。它的视图作为一个Template(模板)来进行存放,在Template中放置着HTML和CSS片段,而控制器来对该Template中的元素进行操作。Widget不仅支持自定义的样式表,并且能够对内部元素的事件进行处理。用户在页面中只需要加入简单的标签就可以使用。在这一层中,存在数百个功能强大的Widget方便用户使用,包括表格、树、菜单等。常用包介绍Dojo1.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.dataDojo的统一数据访问接口,可以方便地读取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.xmlXML解析工具包;djConfig是dojo内置的一个全局设置对象,其作用是可以通过其控制dojo的行为首先我们需要在引用dojo.js前声明djConfig对象,以便在加载dojo.js的时候才能够取得所设置的值,虽然在0.3版本以后dojo支持在加载后设置,但是强烈建议你把声明djConfig的代码作为第一段script一个完整的djConfig对象定义如下(值均为dojo的默认值)scripttype=text/javascriptvardjConfig={isDebug:false,debugContainerId:,bindEncoding:,allowQueryConfig:false,baseScriptUri:,parseWidgets:truesearchIds:[],baseRelativePath:,libraryScriptUri:,iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,};/scriptisDebug是一个很有用的属性,顾名思义,如果设置为真,则所有dojo.Debug的输出有效,开发时应该设置为true,发布时应该设置为falsedebugContainerId同样也是与调试有关的,如果不指定的话,调试信息将会直接利用document.write输出,这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的html元素的id作为调试信息输出容器allowQueryConfig,这个属性指明dojo是否允许从页面url的参数中读取djConfig中的相关属性,当值为true时,dojo会优先从url参数中读取djConfig的其他属性,比如:=divDebugbaseScriptUri,一般不需要设置,dojo会自动根据你引用dojo.js的路径设置这个值,比如,scripttype=text/javascriptsrc=../dojo/dojo.js/script,自动获取的值便是../dojo/ps:如果你有多个工程需要同时引用dojo.js的话,建议也把dojo当作一个独立的工程,引用的时候采用绝对路径就可以了parseWidgets,这个是可以控制dojo是否自动解析具有dojoType的html元素为对应的widget,如果你没有使用任何Widget,建议设置为false以加快dojo的加载速度searchIds,这是一个字符串数组,定义了所有需要解析为widget的html元素的ID,如果ID不在其中的html元素是不会被解析的,当数组为空数组时,则所有具有dojoType的元素都会被解析还有一个bindEncoding,是用来设置默认的bind请求的编码方式至于其它的属性,不是用处不大,就是不知道有什么作用在实际开发中,可以把djConfig的定义放在一个js文件里,并将其作为第一个引用的js文件,这样应该是最方便的。preventBackButtonFix在djConfig中设置preventBackButtonFix:false。这样保证了隐藏的表单(hiddenIFRAME)将会添加到页面当中,如果不加入这段,dojo.undo.browser不会正常工作。译者注:设置方法就是在header中加入如下代码:scriptlanguage=JavaScripttype=text/javascriptdjConfig={isDebug:true,preventBackButtonFix:false};/scriptdjConfig是dojo内置的一个全局设置对象,其作用是可以通过其控制dojo的行为首先我们需要在引用dojo.js前声明djConfig对象,以便在加载dojo.js的时候才能够取得所设置的值,虽然在0.3版本以后dojo支持在加载后设置,但是强烈建议你把声明djConfig的代码作为第一段script一个完整的djConfig对象定义如下(值均为dojo的默认值)scripttype=text/javascriptvardjConfig={isDebug:false,debugContainerId:,allowQueryConfig:false,basescriptUri:,parseWidgets:truesearchIds:[],baseRelativePath:,libraryscriptUri:,iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,};/scriptisDebug是一个很有用的属性,顾名思义,如果设置为真,则所有dojo.Debug的输出有效,开发时应该设置为true,发布时应该设置为falsedebugContainerId同样也是与调试有关的,如果不指定的话,调试信息将会直接利用document.write输出,这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的html元素的id作为调试信息输出容器allowQueryConfig,这个属性指明dojo是否允许从页面url的参数中读取djConfig中的相关属性,当值为true时,dojo会优先从url参数中读取djConfig的其他属性,比如:=divDebugbasescriptUri,一般不需要设置,dojo会自动根据你引用dojo.js的路径设置这个值,比如,scripttype=text/javascriptsrc=../dojo/dojo.js/script,自动获取的值便是../dojo/ps:如果你有多个工程需要同时引用dojo.js的话,建议也把dojo当作一个独立的工程,引用的时候采用绝对路径就可以了parseWidgets,这个是可以控制dojo是否自动解析具有dojoType的html元素为对应的widget,如果你没有使用任何Widget,建议设置为false以加快dojo的加载速度searchIds,这是一个字符串数组,定义了所有需要解析为widget的html元素的ID,如果ID不在其中的html元素是不会被解析的,当数组为空数组时,则所有具有dojoType的元素都会被解析至于其它的属性,不是用处不大,就是不知道有什么作用在实际开发中,可以把djConfig的定义放在一个js文件里,并将其作为第一个引用的js文件,这样应该是最方便的。实现功能:在一个容器里点击一个链接,在另外一个容器中显示这个链接所指向页面的内容。htmlheadscriptsrc=./dojo/dojo.js/scriptscriptdojo.require(dojo.widget.ContentPane);varlinks=null,display=null;dojo.addOnLoad(init);functioninit(){links=dojo.widget.byId(links);display=dojo.widget.byId(display);//listentolinksdomNodeforonclickevent//lowercasedonallDOMeventsasopposedtowidgetevents//onclick,必须是小写的dojo.event.connect(links.domNode,onclick,'relayClicks');}//findsoutifthisisalinkeventfunctionrelayClicks(evt){varnode=evt.target;//取得事件源if(node.nodeName.toLowerCase()==a){//itisalink,preventthebrowserfromunloadingthepageevt.preventDefault();//changepageindisplaypanedisplay.setUrl(node.href);}}/script/headbodyh1Exampleonhowtoeasilyrelayahref=someurl.htmltarget=displayclicks/h1divdojoType
本文标题:Dojo+API1.0
链接地址:https://www.777doc.com/doc-3832881 .html