DOJO API 中文参考手册

合集下载

java中文参考手册

java中文参考手册

java中文参考手册Java是一种广泛应用于各种领域的编程语言,它具有跨平台、面向对象、高效等特点。

自1995年由Sun公司推出以来,Java在全球范围内得到了众多开发者的喜爱。

本手册将为您介绍Java的基本概念、编程技巧以及相关工具和资源。

一、Java简介与历史Java语言诞生于1995年,由詹姆斯·高斯林领导的研究团队开发。

Java的初衷是为了解决C++语言中复杂、易错、低效的问题,设计出一门简单、安全、高效的编程语言。

Sun公司(已被甲骨文公司收购)将其作为核心产品推广,并逐步发展出Java虚拟机(JVM)、Java企业版(J2EE)等系列技术。

二、Java编程基础1.数据类型与变量:Java中有基本数据类型(如int、float、double、boolean等)和引用数据类型(如类、数组和接口)。

变量是用于存储数据的标识符,需要声明其数据类型和初始值。

2.运算符与表达式:Java支持算术、关系、逻辑等运算符,以及赋值、条件、逗号等表达式。

3.控制结构:Java的控制结构包括顺序、分支(如if、switch)和循环(如for、while、do-while)等。

4.函数与方法:函数是一段封装了特定功能的代码,可以通过参数和返回值与调用者进行交互。

方法是类中定义的功能模块,可以用于执行特定操作。

三、Java面向对象编程1.类与对象:类是面向对象编程的基本单元,包含属性和方法。

对象是类的实例,通过创建对象,我们可以调用类中定义的方法来实现具体功能。

2.封装、继承与多态:封装是将数据和操作封装在一起,提高代码的可维护性。

继承是子类继承父类的属性和方法。

多态是指子类可以根据需要覆盖或实现父类的方法,使得不同的对象可以以统一的接口进行操作。

3.接口与内部类:接口是一组方法的声明,可以用于定义类之间的契约。

内部类是定义在另一个类内部的类,可以访问外部类的成员。

四、Java常用类库1.字符串操作:Java提供了许多字符串操作方法,如字符串匹配、替换、截取等。

Dojo中文使用手册

Dojo中文使用手册

Dojo中文使用手册本手册针对0.9、1.0及1.x版本。

目录快速安装Hello World-第一个程序程序调试第一部分:使用Dojo-Dojo和Dijit例子第一个例子:为什么一些人不填写传真表单?第二个例子:总是点击两次第三个例子:和技术人员交谈第二部分Dijit-Dojo的小部件库概述共用特征表单、验证和个性化的文本输入框表单小部件复选框、单选框、切换(?)组合框(ComboBox)下拉过滤选择框(FilteringSelect)数字选择框(NumberSpinner)滑尺(Slider)文本输入域(Textarea)文本框类(验证、货币、数字、日期、时间)布局(只讲一个tabContainer)命令控制按钮、组合按钮和下拉按钮菜单工具菜单用户使用帮助提示和反馈进度条提示对话框和工具对话框页框(TitlePane)高级功能(只讲一个Tree)树(Tree)第三部分:使用Dojo和Dijit与javascript协作通用性初始对象模块建立和设计小部件自已设计小部件类事件系统异步交互XMLHttpRequest(XHR)拖拽使用Dojo.Data接口使用dojo.query选择DOM节点回退按钮其它功能多个版本共处于一个页面第四部分:调试第五部分:Dojox扩展包cometd(客户端)dojox图表dojox集合dojox加密dojox数据dojox网格(翻译)dojox离线(翻译)快速安装Dojo 提供了三种安装方式:1.使用美国在线(AOL)的内容分发网络(CDN)上的dojo.2.在本地使用dojo的一个稳定版本.3.从dojo网站的SVN服务器上获取的最新代码.使用内容分发网络(CDN)上的Dojo这种方法非常的快捷!你能够通过添加一个<script> 到美国在线(AOL)的内容分发网络(CDN)上,而无需占用你服务器上的任何空间和资源.所有在这本手册里出现的Dijit范例均通过此方法获取Dojo的js文件.你可以直接拷贝粘贴第1,2部分的任何例子到你自己的服务器上就可以正常的运行了!在第3部分的例子中,因为很多是一些代码片段,所以我们将提醒您如何做一些更改以便使这些例子正常运行. 您可以使用: <script type="text/javascript"src="/dojo/1.0.0/dojo/dojo.xd.js"></script> 来引用Dojo的js 文件请参考: Dojo And AOL获取最新的引用链接.使用本地的Dojo如果您是Dojo的传统用户,你可以以以往的方式下载,安装,并且使用Dojo.1.从/downloads下载最新的Dojo2.解压缩文件到本地服务器上. 假设您将文件安装到/js目录下,其目录结构应该如下(注:dojo1.2.3版本与本目录不相同,只有dojo、dijit、dojox三个子目录)。

adobe插件开发 api和指导手册

adobe插件开发 api和指导手册

一、介绍Adobe插件开发的重要性Adobe系统是广泛应用于设计、影视等领域的软件评台,其中Photoshop、Illustrator、Premiere等软件拥有庞大的用户裙体和强大的功能。

而为了更好地满足用户的需求和打造更加丰富的功能,Adobe提供了插件开发的API和指导手册,让开发者可以轻松地为Adobe软件开发各种功能丰富的插件,从而扩展软件的功能。

二、Adobe插件开发API的概述1. Adobe插件开发API涵盖了Photoshop、Illustrator、Premiere等软件,开发者可以根据自己的需求选择相应的API进行开发。

2. Adobe插件开发API提供了丰富的功能接口和开发工具,包括图像处理、文件操作、界面设计等方面,帮助开发者快速开发出稳定、高效的插件。

3. Adobe插件开发API支持多种开发语言,包括JavaScript、C++等,让开发者更加灵活地进行开发。

三、Adobe插件开发指导手册的内容和特点1. Adobe提供了针对不同软件的插件开发指导手册,详细介绍了对应软件的插件开发流程、规范和最佳实践。

2. 插件开发指导手册包括了丰富的示例代码和案例,方便开发者进行学习和参考,快速上手插件开发工作。

3. 插件开发指导手册还提供了丰富的技术支持和社区资源,让开发者在开发过程中遇到问题时能够快速寻求帮助。

四、Adobe插件开发的应用范围和市场前景1. Adobe插件开发具有广泛的应用范围,可以为设计师、摄影师、影视剪辑师等裙体提供更加丰富的功能和工作效率。

2. 随着Adobe软件用户裙体的不断增长,插件开发市场也具有巨大的潜力,吸引着越来越多的开发者加入。

3. Adobe软件的更新和升级也为插件开发带来了新的机遇和挑战,开发者可以根据新的功能和需求进行插件开发,不断拓展市场。

五、总结通过本文对Adobe插件开发的介绍,我们可以看到Adobe插件开发API和指导手册的重要性和优势。

dojo基础入门

dojo基础入门

dojo对数组的处理函数,dojo.forEach、dojo.every、dojo.some、dojo.map等数组处理是 Ajax 应用开发中的常见操作。

Dojo 基本库提供了一些方法用来方便的对数组进行处理,完成一些典型的任务。

这些与数组处理相关的方法的具体说明如下所示:dojo.forEach(array, callback, scope):该方法用来遍历数组并对其中的每个元素执行操作。

其参数 array表示的是数组,callback表示的是对每个元素所执行操作的 JavaScript 方法,可选的 scope表示的是 callback方法调用时 this所指向的对象。

callback方法在被调用时会传入三个参数,分别表示当前元素、当前元素在数组中的序号以及数组本身。

dojo.every(array, callback, scope):该方法用来判断是否数组的全部元素都满足特定的条件。

其三个参数的含义与 dojo.forEach()方法相同。

callback方法通过返回真假值来声明某个元素是否符合条件。

dojo.some(array, callback, scope):该方法用来判断数组中是否至少有一个元素满足特定的条件。

其三个参数和 callback方法的含义与 dojo.every()相同。

dojo.map(array, callback, scope):该方法用来对数组中的每个元素执行操作,并返回一个数组包含操作的结果。

其三个参数的含义与 dojo.forEach()相同。

dojo.filter(array, callback, scope):该方法用来对数组中包含的元素进行过滤,只保留满足特定条件的元素。

其三个参数的含义与 dojo.forEach()相同。

callback方法通过返回真假值来声明某个元素是否应该被保留。

dojo.indexOf(array, value, fromIndex, findLast):该方法用来在数组中查找指定的元素,如果找到就返回该元素在数组中的序号,否则返回 -1。

Dojo1.11官方教程文档翻译(1.3)新的Dojo资料

Dojo1.11官方教程文档翻译(1.3)新的Dojo资料

Dojo1.11官方教程文档翻译(1.3)新的Dojo起步Dojo1.7是Dojo Toolkit向现代架构的一个重大转变,Dojo1.10在这个趋势上更进一步。

因为它广泛的向后兼容,为了充分利用Dojo1.10的优势,一些基本概念由此发生了改变。

这些概念将作为Dojo2.0的基础,采用这些新概念将帮你在正确的路上走得更远。

当然为了从这些新的要素(如dojo\/on )中直接获益,你需要采用其中一些新概念。

本教程将解释一些Dojo中介绍的概念,主要侧重于新的Dojo。

我会尽力说明为什么作出改变和如何改变。

一些变化是从根本上的出现的,咋一看会很迷惑,但它们都有着充分的理由——让你的代码更高效、运行更快、玩转JavaScript、更棒的可维护性。

总之,花时间去理解modern Dojo是值得的。

本教程不是一个手把手的版本迁移指导,但对于很熟悉Dojo的你来说,它远胜于一个初级概念读本。

更多的技术细节请参考Dojo 1.X to 2.0 Migration Guide 。

Hello新世界新Dojo的一个核心理念就是全局命名空间是件坏事。

这有很多原因,在一个复杂的web应用中,全局命名空间很容易被各种代码污染,特别是当许多组织使用多重JavaScript框架时。

我甚至不用从安全的角度去提那些故意修改全局命名空间产生的恶果。

如果你打算在新Dojo中的全局命名空间里访问一些东西,请剁手。

由于向后兼容的原因大量的toolkit暂时是全局范围的,但不要用在新的开发中。

当你发现你在输入dojo.* 或dijit.* 或dojox.* ,你正步入歧途。

那些只是引入dojo.js 来获取一个核心功能然后输入dojo.something 来require几个模块到你的核心内容的开发者们,你们真的要改改了,因为这么干真的很糟。

再来一次,跟着我念“全局命名空间真烂,全局命名空间真烂,我才不用全局命名空间,我才不用全局命名空间”。

DojoNotificationAPIdojo学习

DojoNotificationAPIdojo学习

当使用data和items时,在dojo.data datastore中创建、删除、修改items的时候,能够得到通知是非常有用的,即我们所说事件,stores即数据存储提供了一些监视事件,比如:create,modify,delete等。

API Requirements对于所有dataStores,不是所有的stores都实施了这些API,对于实施了这些API的stores,都遵循下列假定:1、 Items上的所有改变的事件(create,set attribute and delete)将触发对相关store通知函数的调用2、 Notifications发生在store级别并且对所有items都会发生。

Examples这些函数对于change事件通常有两种listening模式. 第一种模式是使用 dojo.connect() event model来绑定你自定义的一个函数到store上,当无论何时store调用onSet, onNew, and onDelete时,将调用你的这个函数. 第二种模式是在store上使用自定义的逻辑来替换notification functions的实现方案. Example usage of such functions areprovided in the following examples.Basic dojo.connect这个例子演示了如何使用dojo.connect to connect the datastores onNew functionwith one of your own functions:var store = some.NotifyWriteStore();var alertOnNew = function(item) {var label = store.getLabel(item);alert("New item was created: [" + label + "]");};dojo.connect(store, "onNew", alertOnNew);//An alert should be thrown when this completesvar newItem = store.newItem({foo:"bar"});Replacing the onNew function本例演示了如何使用自定义函数覆盖dataStore的onNew函数:var store = some.NotifyWriteStore();store.onNew = function(item) {var label = this.getLabel(item);alert("New item was created: [" + label + "]");};//An alert should be thrown when this completesvar newItem = store.newItem({foo:"bar"});The Complete FeatureFor convenience, the complete feature from dojo/data/api/Notification.js is defined below:onSetonSet: function(item, attribute, oldValue, newValue)summary:任何时候一个Item被setValue,setValues,unsetAttribute等函数修改的时候,onSet将会被调用.description:它的用途是提供一个 hook point 以供希望在store里监视items上的行为. The general expected usage is to dojo.connect() to the store's implementation and be called after the store function is called.Nothing.onNewonNew: function(newItem, parentInfo)summary:任何时候在store里一个新的item被创建时,这个函数被调用.在store的newItem 进程完成后将后立即被调用.description:This function is called any time a new item is created in the store. It is called immediately after the store newItem processing has completed.。

中文版kendoUIAPI—Grid(一)

中文版kendoUIAPI—Grid(一)

中⽂版kendoUIAPI—Grid(⼀)1.altRowTemplate类型:Function | String说明:提供表格⾏的交替模板,默认grid表格为每⼀个数据元素提供⼀个tr注意:模板中最外层的html元素必须是<tr>,这个<tr>必须有⼀个uid属性,并设置为#= uid #,grid使⽤uid属性判定绑定⾏的元素。

Example:通过Function⽅式提供模板1 <div id="grid"></div>2 <script id="alt-template" type="text/x-kendo-template">3 <tr data-uid="#= uid #">4 <td colspan="2">5 <strong>#: name #</strong>6 <strong>#: age #</strong>7 </td>8 </tr>9 </script>10 <script>11 $("#grid").kendoGrid({12 dataSource: [13 { name: "Jane Doe", age: 30 },14 { name: "John Doe", age: 33 }15 ],16 altRowTemplate: kendo.template($("#alt-template").html())17 });18 </script>通过String⽅式提供模板1 <div id="grid"></div>2 <script>3 $("#grid").kendoGrid({4 dataSource: [ { name: "Jane Doe", age: 30 }, { name: "John Doe", age: 33 } ],5 altRowTemplate: '<tr data-uid="#= uid #"><td colspan="2"><strong>#: name #</strong><strong>#: age #</strong></td></tr>'6 });7 </script>2. autoBind Boolean(default:true)说明:如果值设为false,控件在初始化期间将不绑定数据源,默认情况数据源是绑定在指定属性中的。

Dojo实用API大全(中文注解)

Dojo实用API大全(中文注解)

Dojo实用API大全(中文注解)Dojo实用API大全(中文注解)模块:dojo.domdojo.dom.isNode测试指定对象是否为节点Usage Example:dojo.dom.isNode(dojo.byId('edtTitle'));dojo.dom.getUniqueId取得唯一idUsage Example:dojo.dom.getUniqueId(); //will return dj_unique_# dojo.dom.firstElement = dojo.dom.getFirstChildElement 取得指定节点下的第一个满足指定Tag条件的子节点Usage Example:dojo.dom.firstElement(parentNode, 'SPAN');/doc/ed12850707.html,stElement = dojo.dom.getLastChildElement取得指定节点下的最后一个满足指定Tag条件的子节点Usage Example:/doc/ed12850707.html,stElement(par entNode, 'SPAN');dojo.dom.nextElement = dojo.dom.getNextSiblingElement 取得指定节点的下一个满足指定Tag条件的子节点Usage Example:dojo.dom.nextElement(node, 'SPAN');dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement取得指定节点的前一个满足指定Tag条件的子节点Usage Example:dojo.dom.prevElement(node, 'SPAN');dojo.dom.moveChildren把指定节点下的所有子节点移动到目标节点下,并返回移动的节点数Usage Example:dojo.dom.moveChildren(srcNode, destNode, true); //仅移动子节点,srcNode中的文字将被丢弃dojo.dom.moveChildren(srcNode, destNode, false);//包括文字和子节点都将被移动到目标节点下dojo.dom.copyChildren把指定节点下的所有子节点复制到目标节点下,并返回复制的节点数Usage Example:dojo.dom.moveChildren(srcNode, destNode, true); //仅复制子节点,srcNode中的文字将被忽略dojo.dom.moveChildren(srcNode, destNode, false);//包括文字和子节点都将被复制到目标节点下dojo.dom.removeChildren删除指定节点下的所有子节点,并返回删除的节点数Usage Example:dojo.dom.moveChildren(node);dojo.dom.replaceChildren用指定的新节点替换父节点下的所有子节点Usage Example:dojo.dom.replaceChildren(node, newChild); //目前还不支持newChild为数组形式dojo.dom.removeNode删除指定的节点Usage Example:dojo.dom.removeNode(node);dojo.dom.getAncestors返回指定节点的父节点集合Usage Example:dojo.dom.getAncestors(node, null, false); //返回所有的父节点集合(包括指定的节点node)dojo.dom.getAncestors(node, null, true); //返回最近的一个父节点dojo.dom.getAncestors(node, function(el){/* 此处增加过滤条件 */return true}, false); //返回所有满足条件的父节点集合dojo.dom.getAncestorsByTag返回所有符合指定T ag的指定节点的父节点集合Usage Example:dojo.dom.getAncestorsByTag(node, 'span', false); //返回所有的类型为SPAN的父节点集合dojo.dom.getAncestorsByTag(node, 'span', true); //返回最近的一个类型为SPAN的父节点dojo.dom.getFirstAncestorByTag返回最近的一个符合指定Tag的指定节点的父节点Usage Example:dojo.dom.getFirstAncestorByTag(node, 'span'); //返回最近的一个类型为SPAN的父节点dojo.dom.isDescendantOf判断指定的节点是否为另一个节点的子孙Usage Example:dojo.dom.isDescendantOf(node, ancestor, true); //判断node 是否为ancestor的子孙dojo.dom.isDescendantOf(node, node, false); //will return truedojo.dom.isDescendantOf(node, node, true); //will return falsedojo.dom.innerXML返回指定节点的XMLUsage Example:dojo.dom.innerXML(node);dojo.dom.createDocument创建一个空的文档对象Usage Example:dojo.dom.createDocument();dojo.dom.createDocumentFromText根据文字创建一个文档对象Usage Example:dojo.dom.createDocumentFromText('1','text/xml'); doc.load根据文件装在XMLUsage Example:var doc = dojo.dom.createDocument();doc.load('http://server/dojo.xml');dojo.dom.prependChild将指定的节点插入到父节点的最前面Usage Example:dojo.dom.prependChild(node, parent);dojo.dom.insertBefore将指定的节点插入到参考节点的前面Usage Example:dojo.dom.insertBefore(node, ref, false); //如果满足要求的话就直接退出dojo.dom.insertBefore(node, ref, true);dojo.dom.insertAfter将指定的节点插入到参考节点的后面Usage Example:dojo.dom.insertAfter(node, ref, false); //如果满足要求的话就直接退出dojo.dom.insertAfter(node, ref, true);dojo.dom.insertAtPosition将指定的节点插入到参考节点的指定位置Usage Example:dojo.dom.insertAtPosition(node, ref, "before");//参考节点之前dojo.dom.insertAtPosition(node, ref, "after"); //参考节点之后dojo.dom.insertAtPosition(node, ref, "first"); //参考节点的第一个子节点dojo.dom.insertAtPosition(node, ref, "last"); //参考节点的最后一个子节点dojo.dom.insertAtPosition(node, ref); //默认位置为"last"dojo.dom.insertAtIndex将指定的节点插入到参考节点的子节点中的指定索引的位置Usage Example:dojo.dom.insertAtIndex(node, containingNode, 3); //把node 插入到containingNode的子节点中,使其成为第3个子节点dojo.dom.textContent设置或获取指定节点的文本Usage Example:dojo.dom.textContent(node, 'text'); //设置node的文本为'text'dojo.dom.textContent(node); //返回node的文本dojo.dom.hasParent判断指定节点是否有父节点Usage Example:dojo.dom.hasParent(node);dojo.dom.isTag判断节点是否具有指定的tagUsage Example:var el = document.createElement("SPAN");dojo.dom.isTag(el, "SPAN"); //will return "SPAN"dojo.dom.isTag(el, "span"); //will return ""dojo.dom.isTag(el, "INPUT", "SPAN", "IMG"); //will return "SPAN"模块:dojo.event终于进入有名的dojo事件处理系统的学习了,学习前建议读者先去补习一下AOP的相关知识dojo.event.connect绑定指定的方法到指定的对象的方法上Usage Example:简单绑定1function doOnClick1(){alert("Clicked!");}dojo.event.connect(dojo.byId("inputT est"),"onclick","doOnCl ick1");简单绑定2obj = { doOnClick2: function(){ alert("Clicked!");}}dojo.event.connect(dojo.byId("inputT est"),"onclick",obj,"do OnClick2");如果存在需要进行多个事件的绑定的时候,你就会看到dojo的方便之处了obj2 = { doOnClick2: function(){alert("Clicked!");}}dojo.event.connect(dojo.byId("inputT est"),"onclick",obj,"do OnClick2");dojo.event.connect(dojo.byId("inputT est"),"onclick",obj2,"do OnClick2");connect可以对任何对象的方法进行绑定,而不是只能针对DOM 对象dojo.event.connect(obj,"doOnclick2","doOnClick1"); //在调用obj.doOnclick2()后调用doOnClick1()dojo.event.connectBeforedojo.event.connect默认是后绑定,connectBefore则是早绑定,绑定的方法将在指定方法前执行,用法与connect一致dojo.event.connectAroundUsage Example:function aroundTest(invocation){//此处可以增加代码,比如检查参数(invocation.args)var result = invocation.proceed();//此处可以增加代码,比如修改结果(result)return result;}dojo.event.connectAround(dojo.byId("inputTest"),"onclick"," aroundTest");dojo.event.connectOnce说起这个函数,还真的是让我想了半天,直觉上我就把它想象成executeOnce,结果测试的结果让我差点想不通connectOnce就是指保证只绑定一次,来避免重复绑定会导致的重复执行的问题dojo.event.disconnect解除绑定,调用参数与connect一致,即可解除之前的绑定操作dojo.event.log在执行指定对象的指定方法后自动记录日志Usage Example:dojo.event.log(obj, "doOnClick"); //当调用obj.doOnClick时记录下日志"DEBUG: ([object Object]).doOnClick : "你也可以这样写:dojo.event.log({srcObj: obj, srcFunc: "doOnClick"});dojo.event.kwConnectkwConnect可以做到更加灵活的绑定,比如可以设置延迟执行绑定Usage Example:dojo.event.kwConnect({srcObj: dojo.byId("inputTest"),srcFunc: "onclick",adviceObj: obj,adviceFunc: "doOnclick2",type: "before", //默认为"after",可选: "before", "around",注意:type是用来决定adviceFunc的行为的,如果为"around",则aroundFunc将失效aroundObj: null,aroundFunc: null, //如果指定了aroundFunc,则其将对adviceFunc进行拦截,但是当type为"around"时,则aroundFunc 将不会执行once: false, //默认为false,允许重复绑定delay: 3000, //延时3秒后执行adviceFuncrate: 0, //这个从源代码没有看懂起什么作用adviceMsg: false //这个从源代码没有看懂起什么作用});dojo.event.kwDisconnect用来解除使用kwConnect指定的绑定模块:dojo.event.topicTopic机制与Advice机制都能够实现事件的绑定,但是显然,Topic更适合处理多重绑定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DOJO API 中文参考手册,附加注解实例Dojo 体系架构总体上来看是一个分层的体系架构。

最下面的一层是包系统,Dojo API 的结构与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 方便用户使用,包括表格、树、菜单等。

常用包介绍Dojo 1.1.1提供了上百个包,这些包分别放入三个一级命名空间:Dojo,Dijit 和DojoX 。

其中Dojo 是核心功能包,Dijit 中存放的是Dojo 所有的Widget 组件,而DojoX 则是一些扩展或试验功能,DojoX 中的试验功能在成熟之后有可能在后续版本中移入到Dojo 或Dijit 命名空间中。

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

djConfig是dojo 内置的一个全局设置对象,其作用是可以通过其控制dojo 的行为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 库;yout页面布局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.js前声明djConfig对象,以便在加载dojo.js的时候才能够取得所设置的值,虽然在0.3版本以后dojo支持在加载后设置,但是强烈建议你把声明djConfig的代码作为第一段script一个完整的djConfig对象定义如下(值均为dojo的默认值)<script type="text/javascript">var djConfig={isDebug:false,debugContainerId:"",bindEncoding:"",allowQueryConfig:false,baseScriptUri:"",parseWidgets:truesearchIds:[],baseRelativePath:"",libraryScriptUri:"",iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,};</script>isDebug是一个很有用的属性,顾名思义,如果设置为真,则所有dojo.Debug的输出有效,开发时应该设置为true,发布时应该设置为falsedebugContainerId同样也是与调试有关的,如果不指定的话,调试信息将会直接利用document.write输出,这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的html元素的id作为调试信息输出容器allowQueryConfig,这个属性指明dojo是否允许从页面url的参数中读取djConfig中的相关属性,当值为true时,dojo会优先从url参数中读取djConfig的其他属性,比如: http://server/dojoDemo.htm?djConfig.debugContainerId=divDebugbaseScriptUri,一般不需要设置,dojo会自动根据你引用dojo.js的路径设置这个值,比如,<script type="text/javascript"src="../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。

这样保证了隐藏的表单(hidden IFRAME)将会添加到页面当中,如果不加入这段,dojo.undo.browser不会正常工作。

译者注:设置方法就是在header中加入如下代码:<script language="JavaScript"type="text/javascript">djConfig={isDebug:true,preventBackButtonFix:false};</script>djConfig是dojo内置的一个全局设置对象,其作用是可以通过其控制dojo的行为首先我们需要在引用dojo.js前声明djConfig对象,以便在加载dojo.js的时候才能够取得所设置的值,虽然在0.3版本以后dojo支持在加载后设置,但是强烈建议你把声明djConfig的代码作为第一段s cript 一个完整的djConfig对象定义如下(值均为dojo的默认值)<s cript type="text/javas cript">var djConfig={isDebug:false,debugContainerId:"",allowQueryConfig:false,bases criptUri:"",parseWidgets:truesearchIds:[],baseRelativePath:"",librarys criptUri:"",iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,};</s cript>isDebug是一个很有用的属性,顾名思义,如果设置为真,则所有dojo.Debug的输出有效,开发时应该设置为true,发布时应该设置为falsedebugContainerId同样也是与调试有关的,如果不指定的话,调试信息将会直接利用document.write输出,这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的html元素的id作为调试信息输出容器allowQueryConfig,这个属性指明dojo是否允许从页面url的参数中读取djConfig中的相关属性,当值为true时,dojo会优先从url参数中读取djConfig的其他属性,比如:http://server/dojoDemo.htm?djConfig.debugContainerId=divDebugbases criptUri,一般不需要设置,dojo会自动根据你引用dojo.js的路径设置这个值,比如,<script type="text/javas cript"src="../dojo/dojo.js"></s cript>,自动获取的值便是../dojo/ps:如果你有多个工程需要同时引用dojo.js的话,建议也把dojo当作一个独立的工程,引用的时候采用绝对路径就可以了parseWidgets,这个是可以控制dojo是否自动解析具有dojoType的html元素为对应的widget,如果你没有使用任何Widget,建议设置为false以加快dojo的加载速度searchIds,这是一个字符串数组,定义了所有需要解析为widget的html元素的ID,如果ID不在其中的html元素是不会被解析的,当数组为空数组时,则所有具有dojoType的元素都会被解析至于其它的属性,不是用处不大,就是不知道有什么作用在实际开发中,可以把djConfig的定义放在一个js文件里,并将其作为第一个引用的js文件,这样应该是最方便的。

相关文档
最新文档