DOJO API 中文参考手册
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中文使用手册本手册针对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插件开发的重要性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.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.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学习
当使用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(⼀)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.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更适合处理多重绑定。
DojoQuery详解
} }
在上述代码中,我们需要对页面中的所有节点进行遍历,逐一判断其 className 属性是否满足匹配条件才行。通过这个典型的例子,我们可以清楚地看到,使用 Dojo Query 在 DOM 节点查询方面具有非常显著的优势。 事实上,使用 Dojo Query 不仅在表达查询条件的简洁性上会更具优势,相比于直接利用 DOM API 进行处理的方式,其执行速度也通常会更加的快。接下来读者便会看到,这一点尤其在我们需要查询相对复杂的页面节点 关系时,会变得更为突出。 除了上述我们看到的,Dojo Query 提供了基本的依据 tag、class、id 进行查询的方式以外,它还提供了许多更为复杂的查询语法,而所有这些语法则都遵循于 CSS 规范。Dojo Query 的这一做法十分的明智,因为 CSS 是已经被大家所广泛使用和接受了的一种 Web 技术,其对 HTML 页面元素进行选择性修饰的方式,兼具语法简洁和功能强大的特点,目前所有的主流浏览器都对 CSS 有很好的支持。Dojo Query 沿用了 CSS 的语法,使得 使用者无需学习一整套新的查询语法,便可以很好的掌握 Dojo Query 的使用,以完成各种复杂的查询功能。 目前,Dojo Query 支持许多常见的 CSS 选择器语法。例如,我们可以利用较为复杂的类选择器语法,实现对符合指定 class 属性的指定元素进行查询:
}); </script> </head> <body>
<button id="b1" /> <button id="b2" /> <form id="thisForm" >
dojo常用属性API
Dijit:1.validationTextBox: 这个文本输入框的功能比较强大,关键是它能够提供一些常用的验证和大小写转换.Eg: <body class="tundra"><form name="form1"><input type="text" id="vt" dojoType="dijit.form.V alidationTextbox"promptMessage="请输入信息"invalidMessage="输入的信息有误"required="true"//必须填写trim="true"//将前后的空格自动删除propercase="true">//单词首字母大写uppercase="true" //大写字母形式lowercase="true" //小写字母形式2.TextBox:类似于HTML 的[text] 控件,同时提供一系列很酷的功能:可以裁空,改变大小写,设置必填,验证输入合法性,日期组件等;3.Button(BusyLable:防止重复提交) 类似于HTML 的[button] 风格的控件,同时增加了一些高级的特性;4.DateTextBox: 用户即可以选择日期,也可以在文本框内输入日期,对于日期相差很远的情况(onValueChanged="alert()"比较实用)5.checkBox:<input dojoType="dijit.form.CheckBox" id="updateOn" jsId="updateOn"name="updateOn" type="checkbox" disabled="disabled" /> readonly=”readonly”6.DropDownButton: DOJO的下拉菜单,如查想当鼠标移到菜单上时就弹出下级菜单的话,还有templateString属性添加onmouseover:_onDropDownClick,事件就可以了7.FilteringSelect:类似于HTML 的[select] 控件,可以动态填充可选项,并且可以按需设置加载选项的数量;<select name="CmlsSupply.transportType"id="CmlsSupply.transportType" style="WIDTH: 90%"dojoType="dijit.form.FilteringSelect" autoComplet="true" invalidMessage="请正确选择运输类型" required="true">8.NumberTextBox:<input type="text" name="xx"id="xx"dojoType="dijit.form.NumberTextBox" required="false" value="0"invalidMessage="xx" />boBox: 类似于HTML 的[select] 组合框和[text] 域控件的结合体。
DOJO中文手册
什么是dojo<script type="text/javascript">djConfig = { isDebug:</script><script type="text/javascript" src="/yourpath/dojo.js" /><script type="text/javascript">dojo.require("dojo.math");dojo.require("dojo.io.*");dojo.require("dojo.widget.*");</script>svn co /dojo/trunk/svn co /dojo/trunk/ .svn co /dojo/trunk/ MyDirdojo.require("dojo.html.extras")dojo.require("dojo.lfx.html");dojo.require("dojo.lfx.html"); dojo.require("dojo.lfx.extras");<script type="text/javascript"> varisDebug:debugContainerId: "",allowQueryConfig:baseScriptUri: "",parseWidgets:searchIds: [],baseRelativePath: "", libraryScriptUri: "",iePreventClobber:ieClobberMinimal:preventBackButtonFix: };</script>dojo.event.kwConnect({srcObj: dojo.byId("inputTest"),srcFunc: "onclick",adviceObj: obj,adviceFunc: "doOnclick2",type: "before", //默认为"after",可选: "before", "around",注意:type是用来决定adviceFu nc的行为的,如果为"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更适合处理多重绑定。
DOJO API中文参考手册附加注解实例
djConfig 是 dojo 内置的一个全局设置对象,其作用是可以通过其控制 dojo 的行为 首先我们需要在引用 dojo.js 前声明 djConfig 对象,以便在加载 dojo.js 的时候才能够取得所设置的值,虽然在 0.3 版本以后 dojo 支持在加载后设置,但是强烈建议你把声明 djConfig 的代码作为第一段 script
searchIds: [], baseRelativePath: "", librarys criptUri: "", iePreventClobber: false, ieClobberMinimal: true, preventBackButtonFix: true, }; </s cript> isDebug 是一个很有用的属性,顾名思义,如果设置为真,则所有 dojo.Debug 的输出有效,开发时应该 设置为 true,发布时应该设置为 false debugContainerId 同样也是与调试有关的,如果不指定的话,调试信息将会直接利用 document.write 输出, 这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的 html 元素的 id 作为调试信息 输出容器 allowQueryConfig,这个属性指明 dojo 是否允许从页面 url 的参数中读取 djConfig 中的相关属性,当值为 true 时,dojo 会优先从 url 参数中读取 djConfig 的其他属性,比 如: http://server/dojoDemo.htm?djConfig.debugContainerId=divDebug bases criptUri,一般不需要设置,dojo 会自动根据你引用 dojo.js 的路径设置这个值,比如,<s cript 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 文件,这样应该 是最方便的。 实现功能:在一个容器里点击一个链接,在另外一个容器中显示这个链接所指向页面的内容。 <html> <head> <script src="./dojo/dojo.js"> </script> <script> dojo.require("dojo.widget.ContentPane"); var links = null, display = null; dojo.addOnLoad(init); function init(){ links = dojo.widget.byId("links"); display = dojo.widget.byId("display"); // listen to links domNode for onclick event // lowercased on all DOM events as opposed to widget events //"onclick",必须是小写的 dojo.event.connect(links.domNode, "onclick", 'relayClicks'); } // finds out if this is a link event function relayClicks(evt){ var node = evt.target;//取得事件源 if(node.nodeName.toLowerCase() == "a"){ // it is a link, prevent the browser from unloading the page evt.preventDefault(); // change page in display pane display.setUrl(node.href); } } </script> </head> <body> <h1>Example on how to easily relay <a href="someurl.html" target="display"> clicks</h1> <div dojoType="ContentPane" widgetId="links"
Dojo中文手册
实战Dojo工具包一个品质远远超出“原型建造”的Ajax库原文链接:/articles/dojo-in-practice/DojoToolkitInPractice.pdf 源代码下载:/articles/dojo-in-practice/dojo-itinerary.tgz译文链接:/upload/DojoInPractice.rar作者:Dion Almaer()译者:李锟()版本号:1.0版权声明:本文是有版权的著作,原文的版权属于原作者所有,译文的版权属于译者所有。
译者在得到了原作者的许可后翻译了这篇文章。
译文允许在不做任何改动(包括原文/译文链接、作者/译者信息、版权声明、文章的全部内容)的情况下自由转载。
内容目录1 简介 (3)2 Dojo工具包:JavaScript开发的水槽(Kitchen Sink) (3)3 设置和配置Dojo (4)3.1 选择正确的Dojo创建 (4)3.2 动态加载package (5)3.3 定制的创建 (5)4 应用:旅行路线编辑器 (6)5 DOM和HTML效果 (6)5.1 处理DOM (7)5.2 Dojo的HTML效果 (8)6 使用dojo.io.bind()的Ajax远程调用 (8)6.1.1 淡出和移除 (9)6.1.2 使用XMLHttpRequest来告诉服务器发生了什么 (9)7 拖放操作 (10)7.1.1 连接所有的天 (11)7.1.2 连接单个的天 (11)7.1.3 onLoad (11)8 结论 (12)9 作者简历 (12)1 简介当你开始建造一个Ajax应用时,你很快就会遇到一些情形,让你感觉自己好像是在重新发明轮子。
大量的开发者一想到Ajax,就会直接扑向XMLHttpRequest对象,但这仅仅只是一个开始,而且是Ajax开发中很容易的部分。
当你在建造JavaScript富客户端应用时,你会遇到大量令人烦恼的事情。
dojo学习
(一). Dojo基本1. Dojo分为三个项目:dojo是Dojo的基础,所有其他的功能都建立在其上,总之,它包含大约50个JavaScript脚本和几个其他资源。
这些资源用于处理浏览器差异的统一,JavaScript模块化,JavaScript核心库扩展,W3C DOM API扩展,远程脚本编程,拖放,数据存储API,本地化和国际化,以及一些其他的附加功能。
dijitDojo的小部件框架和内建的小部件集,widgets,例如TAB,TREE等dojoxDojo扩展库。
这包含了从表格小部件到绘图库的所有功能,例如ENHANCEDGRID, 2D,3D图形,图表,等2. Dojo常用方法dojo.require引用JS文件DOJO特色,按需加载JS文件dojo.addOnLoad表示在HTML页面加载后执行脚本程序dojo.byId按照DOMID得到一个DOM对象、(document.getElementsById)dijit.byId每个DIJIT UI组件有个ID,此函数通过ID获取一个UI对象dojo.forEach循环遍历数组通过id 来获得Dijit 实体没有通过dojo.byId() 方法而是使用的dijit.byId() 方法。
在Dojo 体系中,如果想通过Dijit 的id 来获得Dijit 实体,只能通过dijit.byId()。
而作用与document.getElementById() 相同的dojo.byId(),无法获得任何Dijit 实体。
Dojo 组织认为DOM 对象实体和Dijit 实体是两个完全不同的对象实体类型。
通过id 去获得这两种实体也应该使用不同的方法。
dojo.byId() 被分配用来获得DOM 对象实体,而dijit.byId() 则被分配用来获得Dijit 类型的实体(二). Dojo的使用1. 引入css样式表的定义文件<style type="text/css">@import"js/dijit/themes/tundra/tundra.css";@import"js/dojo/resources/dojo.css";</style>现在引用dojo自带的css样式。
java中文参考手册
java中文参考手册摘要:1.Java 简介2.Java 的历史和发展3.Java 的跨平台特性4.Java 的基本语法和数据类型5.Java 的控制结构6.Java 的数组和字符串操作7.Java 的面向对象编程8.Java 的异常处理9.Java 的输入输出流10.Java 的多线程编程11.Java 的网络编程12.Java 的集合框架13.Java 的日期和时间操作14.Java 的图形界面编程15.Java 的异常处理机制16.Java 的文件操作17.Java 的数据库编程18.Java 的Web 开发19.Java 的企业级框架20.Java 的安全机制正文:Java 中文参考手册Java 是一种广泛使用的计算机编程语言,它具有跨平台、面向对象、安全性等特点,被广泛应用于Web 开发、桌面应用开发、移动应用开发等领域。
1.Java 简介Java 由Sun Microsystems 公司于1995 年推出,是一种高级编程语言。
Java 的跨平台特性使得开发的程序可以在不同的操作系统上运行,这主要得益于Java 虚拟机(JVM)的存在。
2.Java 的历史和发展Java 语言的雏形最早出现在1991 年,当时Sun 公司为了在电视遥控器等嵌入式设备上运行游戏而开发了一种名为Oak 的编程语言。
随着技术的进步和需求的变化,Oak 逐渐演变成了Java。
3.Java 的跨平台特性Java 的跨平台特性主要归功于Java 虚拟机(JVM)。
JVM 可以在不同的操作系统上安装,Java 程序通过JVM 解释执行,因此具有很好的跨平台性能。
4.Java 的基本语法和数据类型Java 的语法类似于C++,但摒弃了C++中的一些特性,如指针操作和多重继承。
Java 的数据类型分为基本数据类型和引用数据类型。
5.Java 的控制结构Java 的控制结构包括条件语句(if、else、switch 等)、循环语句(for、while、do-while 等)和分支语句(break、continue、return 等)。
dojo-方法解析
dojo-方法解析Dojo-API介绍网上的关于Dojo的文章很多,我从项目经历上阐述自己的一些用法、示例,仅供参考。
Dojo是一个强大的面向对象JavaScript框架。
主要由三大模块组成:Core、Dijit、DojoX。
Core提供Ajax,events,packaging,CSS-based querying,animations,JSON等相关操作API。
Dijit是一个可更换皮肤,基于模板的WEB UI控件库。
DojoX包括一些创新/新颖的代码和控件:DateGrid,charts,离线应用,跨浏览器矢量绘图等。
-------获取dojo相关对象-----------1.dojo.byId() :等同于 document.getElementById(),根据DOM节点的ID获取该节点DOM对象。
2.dijit.byId() : 是获取由dojo widget 系统创建的对象,然后你可以调用这个这个对象的方法或改变这个对象的属性。
-------dojo监听事件-----------3.dojo.connect() :为前端操作创建事件监听器.1 2 3 4 5 /* Set up a connection */dojo.connect(/*Object|null*/ obj,/*String*/ event,/*Object|null*/ context,/*String|Function*/ method)// Returns a Handle4. dojo.disconnect(/*Handle*/handle); 解除注册监听器 /*Tear down a connection */--------dojo的json处理----------5.dojo.fromJson(/*String*/ json) //把json string转化为json object6.dojo.toJson(/*Object*/ json, /*Boolean?*/ prettyPrint) //把json object转化为json string.1 2 3 4 5 6 7 8 9 var o = {a:1, b:2, c:3, d:4};dojo.toJson(o, true); //pretty print/* produces ...'{"a": 1,"b": 2,"c":3,"d":4}'-------dojo的ajax操作-----------7.dojo.xhrGet(/*Object*/args) :ajax的GET提交1 2 3 4 5 6 7 8 9101112 dojo.addOnLoad(function( ) {dojo.xhrGet({url : "someText.html",//the relative URL// Run this function if the request is successfulload :function(response, ioArgs) {console.log("successful xhrGet", response, ioArgs);dojo.byId("foo").innerHTML= response; //always return the response back},// Run this function if the request is not successfulerror :function(response, ioArgs) {console.log("failed xhrGet", response, ioArgs);}});});8.dojo.xhrPost(/*Object*/args) :ajax的POSt提交,支持text、json、xml等提交形式。
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几个模块到你的核心内容的开发者们,你们真的要改改了,因为这么干真的很糟。
再来一次,跟着我念“全局命名空间真烂,全局命名空间真烂,我才不用全局命名空间,我才不用全局命名空间”。
Dojo_JavaScript_编码规范
JavaScript 编码规范(Dojo)前言所有的代码都要变成可供他人容易阅读的。
Any violation to this guide is allowed if it enhances readability.规范目的为提高团队协作效率,便于程序人员添加功能以及前端后期优化维护,输出高质量的产品,特制订此文档;本文档一经确认,前端开发人员必须按照本文档所提及的规范进行前台页面的开发,同时,本文档如有不合适的地方也请指出,经讨论决定后方可修改。
快读参考核心API 请使用下面的风格:下面的虽然不是必要的,但建议使用:命名规范1、变量名称必须为小写字母。
2、类的命名使用骆驼命名规则,例如:Account, EventHandler3、常量必须在对象(类)或者枚举变量的前部声明。
枚举变量的命名必须要有实际的意义,并且其成员必须使用大写:var NodeTypes = {Element : 1,DOCUMENT: 2}4、简写单词不能使用大写名称作为变量名:getInnerHtml(), getXml(), XmlDocument5、方法的命令必须为动词或者是动词短语:obj.getSomeValue()6、公有类的命名必须使用混合名称(mixedCase)命名。
7、CSS 变量的命名必须使用其对应的相同的公共类变量。
8、私有类的变量属性成员必须使用混合名称(mixedCase)命名,并前面下下划线(_)。
例如:var MyClass = function(){var _buffer;this.doSomething = function(){};}9、变量如果设置为私有,则前面必须添加下划线。
this._somePrivateVariable = statement;10、通用的变量必须使用与其名字一致的类型名称:setTopic(topic) // 变量topic 为Topic 类型的变量11、所有的变量名必须使用英文名称。
java api 中文手册
java api 中文手册除了被用作基本网络、移动、桌面软件的编程语言之外,Java 还在数字化时代的其他领域发挥着越来越重要的作用,但想要真正掌握它却不是易事。
读者朋友们,今天就有一份 Java API 中文手册来帮助大家理解 Java 的威力,用多样有趣的文字表达形容 Java 的特性,结合网友们的实践,让大家可以对 Java 把握更清晰,更从容地上手。
一、Java API 中文手册介绍1. 概述Java API 中文手册给中文开发者带来了一个极其方便的指引。
它不仅提供了清晰易懂的概述,而且所有的Java API,以及支持的技术,都聚集在一个位置,让用户可以简明扼要地查看和获取重要的信息。
此外,用户还可以利用本手册来了解Java语言的极端强大的特性和表现力。
包括Java 8中的Lambda表达式,这可以让开发者在不损失程序性能和稳定性的情况下使用简洁的编程语法来实现功能。
本手册还收录了Java虚拟机(JVM)和Java Web开发有关的许多内容,着眼于提高用户的开发效率。
因此,开发者可以通过本手册学习到:服务器端如何构建和部署应用程序,以及如何使用API来实现客户端向服务器端的通信。
总而言之,本手册是一本不可多得的开发指南,帮助开发者更好地掌握和理解Java API,从而实现更多功能、更高效率的开发和部署。
2. 特点《java api 中文手册》作为java开发人员的重要参考资料,具备几大特点,让你不再为开发上的小细节而困扰:首先,它节省了你不少的时间:每一个API模块都详细介绍了如何使用和实现,想创建一个复杂的应用程序也不再是噩梦!其次,它提供了更加清晰的图示让你理解:它不会因为文字描述的抽象而让你一头雾水,而是提供明确的图示,让你步步明晰,可以在一张图中把握整个API的精髓!再者,它是翻译的极品:你的代码源来自世界各地,不同语言的文档可能会令你无从下手,它为你翻译出API中的所有细节,就如同在读一本中文的书!最后,它的可读性极佳:它提供了可检索资料,简单搜索就可以找到相关内容;它的内容又精确又清晰,让你得心应手,更可以让你触摸到编程的魅力!3. 下载下载 Java API 中文手册,你将有机会获取到最新的 Java 知识,并且还能享受令人愉悦的阅读体验。
cuDLA API 参考手册.pdf_1701878184.765848说明书
API Reference ManualTable of Contents Chapter 1. Data Structures (1)cudlaDevAttribute (1)deviceVersion (1)unifiedAddressingSupported (1)cudlaExternalMemoryHandleDesc_t (1)extBufObject (2)size (2)cudlaExternalSemaphoreHandleDesc_t (2)extSyncObject (2)CudlaFence (2)fence (2)type (2)cudlaModuleAttribute (2)inputTensorDesc (3)numInputTensors (3)numOutputTensors (3)outputTensorDesc (3)cudlaModuleTensorDescriptor (3)cudlaSignalEvents (3)devPtrs (3)eofFences (3)numEvents (3)cudlaTask (4)inputTensor (4)moduleHandle (4)numInputTensors (4)numOutputTensors (4)outputTensor (4)signalEvents (4)waitEvents (4)cudlaWaitEvents (4)numEvents (4)preFences (5)Chapter 2. Data Fields (6)Chapter 1.Data StructuresHere are the data structures with brief descriptions:cudlaDevAttributecudlaExternalMemoryHandleDesccudlaExternalSemaphoreHandleDescCudlaFencecudlaModuleAttributecudlaModuleTensorDescriptorcudlaSignalEventscudlaTaskcudlaWaitEvents1.1. cudlaDevAttribute Union Reference Device attribute.uint32_t cudlaDevAttribute::deviceVersionDLA device version. Xavier has 1.0 and Orin has 2.0.uint8_tcudlaDevAttribute::unifiedAddressingSupported Returns 0 if unified addressing is not supported.1.2. cudlaExternalMemoryHandleDesc_tStruct ReferenceExternal memory handle descriptor.const void*cudlaExternalMemoryHandleDesc_t::extBufObjectA handle representing an external memory object.unsigned long long cudlaExternalMemoryHandleDesc_t::sizeSize of the memory allocation1.3. cudlaExternalSemaphoreHandleDesc_tStruct ReferenceExternal semaphore handle descriptor.const void*cudlaExternalSemaphoreHandleDesc_t::extSyncObjectA handle representing an external synchronization object.1.4. CudlaFence Struct ReferenceFence description.void *CudlaFence::fenceFence.cudlaFenceType CudlaFence::typeFence type.1.5. cudlaModuleAttribute UnionReferenceModule attribute.cudlaModuleTensorDescriptor*cudlaModuleAttribute::inputTensorDescReturns an array of input tensor descriptors.uint32_t cudlaModuleAttribute::numInputTensors Returns the number of input tensors.uint32_t cudlaModuleAttribute::numOutputTensors Returns the number of output tensors. cudlaModuleTensorDescriptor*cudlaModuleAttribute::outputTensorDescReturns an array of output tensor descriptors.1.6. cudlaModuleTensorDescriptor StructReferenceTensor descriptor.1.7. cudlaSignalEvents Struct Reference Signal events for cudlaSubmitTaskconst **cudlaSignalEvents::devPtrsArray of registered synchronization objects (via cudlaImportExternalSemaphore). CudlaFence *cudlaSignalEvents::eofFencesArray of fences pointers for all the signal events corresponding to the synchronization objects. uint32_t cudlaSignalEvents::numEventsTotal number of signal events.1.8. cudlaTask Struct ReferenceStructure of Task.const **cudlaTask::inputTensorArray of input tensors.cudlaModule cudlaTask::moduleHandlecuDLA module handle.uint32_t cudlaTask::numInputTensorsNumber of input tensors.uint32_t cudlaTask::numOutputTensorsNumber of output tensors.const **cudlaTask::outputTensorArray of output tensors.cudlaSignalEvents *cudlaTask::signalEventsSignal events.const cudlaWaitEvents *cudlaTask::waitEvents Wait events.1.9. cudlaWaitEvents Struct Reference Wait events for cudlaSubmitTask.uint32_t cudlaWaitEvents::numEventsTotal number of wait events.const CudlaFence *cudlaWaitEvents::preFences Array of fence pointers for all the wait events.Chapter 2.Data FieldsHere is a list of all documented struct and union fields with links to the struct/union documentation for each field:deviceVersioncudlaDevAttributedevPtrscudlaSignalEventseofFencescudlaSignalEventsextBufObjectcudlaExternalMemoryHandleDescextSyncObjectcudlaExternalSemaphoreHandleDescfenceCudlaFenceinputTensorcudlaTaskinputTensorDesccudlaModuleAttributemoduleHandlecudlaTasknumEventscudlaWaitEventscudlaSignalEventsnumInputTensorscudlaTaskcudlaModuleAttributenumOutputTensorscudlaTaskcudlaModuleAttributeoutputTensorcudlaTaskoutputTensorDesccudlaModuleAttributeData Fields preFencescudlaWaitEventssignalEventscudlaTasksizecudlaExternalMemoryHandleDesctypeCudlaFenceunifiedAddressingSupportedcudlaDevAttributewaitEventscudlaTaskNoticeThis document is provided for information purposes only and shall not be regarded as a warranty of a certain functionality, condition, or quality of a product. NVIDIA Corporation (“NVIDIA”) makes no representations or warranties, expressed or implied, as to the accuracy or completeness of the information contained in this document and assumes no responsibility for any errors contained herein. NVIDIA shall have no liability for the consequences or use of such information or for any infringement of patents or other rights of third parties that may result from its use. This document is not a commitment to develop, release, or deliver any Material (defined below), code, or functionality.NVIDIA reserves the right to make corrections, modifications, enhancements, improvements, and any other changes to this document, at any time without notice. Customer should obtain the latest relevant information before placing orders and should verify that such information is current and complete.NVIDIA products are sold subject to the NVIDIA standard terms and conditions of sale supplied at the time of order acknowledgement, unless otherwise agreed in an individual sales agreement signed by authorized representatives of NVIDIA and customer (“Terms of Sale”). NVIDIA hereby expressly objects to applying any customer general terms and conditions with regards to the purchase of the NVIDIA product referenced in this document. No contractual obligations are formed either directly or indirectly by this document.OpenCLOpenCL is a trademark of Apple Inc. used under license to the Khronos Group Inc.TrademarksNVIDIA and the NVIDIA logo are trademarks or registered trademarks of NVIDIA Corporation in the U.S. and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.Copyright© 2021-2021 NVIDIA Corporation & affiliates. All rights reserved.NVIDIA Corporation | 2788 San Tomas Expressway, Santa Clara, CA 95051。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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文件,这样应该是最方便的。