您好,欢迎访问三七文档
什么是dojoDojo是一个用javascript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets,Burstlib,f(m)),这也是为什么叫它a\unified\toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些,长期存在、历史问题。historicalproblemswithDHTML跨浏览器问题。Dojo让你更容易使web页面具有动态能力,或在任何稳健的支持javascript语言的环境中发挥作用。a、利用dojo提供的组件,你可以提升你的web应用程序可用性、交互能力以及功能上的提高;b、你也可以更容易的建立degradeableuserinterfaces??,dojo提供小巧的widgets,animatetransitions;c、利用它的低级APIs和可兼容的代码,写出轻便的、单一风格(复杂)的javascript代码,Dojo的eventsystem,I/OAPIs,andgenericlanguageenhancementformthebasisofapowerfulprogrammingenvironment.d、通过Dojo提供的工具,你可以为你的代码写命令行式的单元测试代码。e、theDojopackagesystem使你自己的代码更容易维护,偶合性更低。Dojo通过很少的代码完成了以上的功能。(以后可能我详细说说dojo的packagesystem,只需要三个js文件)。当你写脚本时,只需要包含很少的js文件(大小)。也可以选择的(包含)下载dojo提供的庞大的功能。DojoprovidesMultiplePointsOfEntry,InterpreterIndependence,ForwardLookingAPIs,andfocusesonReducingBarriersToAdoption.dojo试图建立一种新的标签语言DojoML。目标是,在DojoML和javascript脚本语言不变的情况下,用不同的render方式展示数据,Renderingsmaybemadeavailableinseveralrenderingcontexts(suchasSVG,orperhapseventhedesktoporFlash)。(比较美好啊)更进一步,theDojoML剖析器可以接受html和svg为输入,容易的建立DegradeableResponsiveApplications。AJAX架构之Dojo篇一、前言自去年开始,AJAX一下成了关注的技术热点,各种AJAX框架迅速的发展了起来,其中又分为客户端AJAX架构,服务器端AJAX架构等,其中DojoToolkit做为一个优秀的客户端AJAX架构,被越来越多的人所关注,学习。自去年开始,AJAX一下成了关注的技术热点,各种AJAX框架迅速的发展了起来,其中又分为客户端AJAX架构,服务器端AJAX架构等,其中DojoToolkit做为一个优秀的客户端AJAX架构,被越来越多的人所关注,学习。二、Dojo简介作为早期的开源AJAX架构之一,Dojo开始于2004年9月,网址是,由JotSpot的AlexRussell所领导。Dojo是一个开源的JavaScript工具包,本身预置了很多模块,可以实现完整的轻量级窗口组件及很多功能。Dojo的包加载机制(PackageSystem)可以实现动态加载所需模块,而且用户可以编写自己的Dojo扩展模块,有很好的灵活性。三、技术特点1.文件结构Dojo目前最高版本号是0.3.1,它的文件主要由一个包含主要功能的核心代码文件(Dojo.js)和众多的Javascript文件组成。使用时可以根据包机制,动态载入所需模块。根据核心代码包含模块的不同,又细分为以下多个版本:·AJAX版本:可以创建带有AJAX应用程序,集成复杂的可视效果,并使用事件模块。·Widget版本:包括与小器件实现松散耦合的HTML和CSS模板能力,提供明确分离的样式、内容和逻辑。·EventandI/O版本:包括事件模块及I/O模块·Event版本:包括事件模块·KitchenSink版本:该版本包括整个工具集合以上版本分别适用于不同的场合。用户也可以根据自己的需求重新构建自己的核心代码文件,只包含自己常用的模块,以避免频繁动态加载常用的模块。2.程序结构Dojo官方的定义中,将Dojo称之为Toolkit(工具包),不是Framework(只是Framework的一部分),也不是Library(在Library之上又加了一层封包系统)。Dojo包括了Javascript本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库。如下图:(原地址)从图中也可看出,Dojo的设计结构非常合理,且扩展性非常强,能够不断增加新的功能,且保证程序高效的运行。四、官方资源Dojo的官方网站有以下资源,可以帮助我们很快的熟悉Dojo的结构,当然,因为Dojo有丰富的功能,要完全掌握还需要在实际开发中逐渐掌握。1.Dojo手册(TheDojoManual)网址:系统地介绍Dojo的机制,使用方法,示例代码等2.Dojo邮件列表(TheDojoMailingLists)可以讨论交流在使用Dojo中遇到的问题,或希望改进的建议申请加入地址:查看存档:.Dojo错误跟踪系统(BugTracking)网址:可以提交有效地发现bug,提交bug,以便能够及时地消除Dojo中的bug4.代码仓库(TheDojoSubversionRepository)网址:可以很方便地获得最新版本的Dojo程序包5.TheDojoWiki网址:的内容类别相对比较丰富,涉及到Dojo的各个方面。6.IRC聊天室地址:irc.freenode.net7.Dojo程序包中附带的Demo程序提供了8大类近30个Demo程序,可以在实践中更快地掌握Dojo的用法。提示:推荐加入Dojo的邮件列表,并仔细研究示例代码,这样能更快地掌握Dojo的使用方法。五、发展前景1.技术层面与其它AJAX框架相比,Dojo设计的包加载机制(PackageSystem)和模块化(Libraries)的结构,能保持更好的扩展性,提高执行性能,减轻了用户开发的工作量,并保持一定的灵活性(用户可以自己编写扩展)。2.市场层面Dojo现在发展迅猛,得到广泛的支持,并成立了Dojo基金会,IBM、AOL、SUN这些大公司和WebWork、Tapestry、OpenLaszlo等开源团队都是dojo基金会的成员,雄厚的后盾保证了Dojo可以持续的发展下去。3.开发团队在AlexRussell的领导下,Dojo的开发团队有着强大的开发能力,从目前版本提供的功能、质量及更新的速度我们就可以看出来了。另外近期Dojo将会发布0.4.0。4.用户群体由于Dojo出色的设计,越来越多的AJAX专家及新手加入到了Dojo的开发者中,这些开发者也会相应地动Dojo的发展。5.学习资源Dojo官方网站有着丰富的学习资源(见“官方资源”一节),可以帮助人们更快地掌握Dojo,减少学习成本。六、结语Dojo可以帮助开发人员开发大型的AJAX项目,并有助于构建健壮的代码,节省开发时间。Dojo背后强大的支持后盾也可以保证持续不断的补充新功能,有助于我们脱离低层重复的工作,专注于在此基础上进行开发。dojo学习笔记(一)-dojo.io.IO&dojo.io.BrowserIO)模块:dojo.io.IOdojo.io.bind处理请求取回需要的数据并处理这个函数是AJAX中最为重要和有用的函数,dojo.io.bind这个类是用来处理客户端与服务器间通讯的,需要通讯的参数由对象dojo.io.Request所定义,具体通讯的方法则由另外一个对象Transport所提供。因此,我们如果需要与服务器通讯,则应该定义一个Request对象,其中包括服务器地址及回调函数,例子中Requset都是以匿名对象方式定义的虽然我们可以定义一个自己的Transport,但是显然不如直接利用现成的Transport方便。Dojo里提供了一个同时兼容IE和Firefox的dojo.io.XMLHTTPTransport,但是这个对象位于dojo.io.BrowserIO,因此,一般requiredojo.io.IO时,还应该requiredojo.io.BrowserIOUsageExample:dojo.io.bind({url:要请求的页面地址mimetype:text/html,//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype,默认为text/plainmethod:GET,//默认为GETsync:false,//默认为异步执行useCache:false,//默认为不使用页面缓存,注意这里的缓存并不是浏览器的缓存,而是Dojo自身所维护的页面缓存preventCache:false,//默认为启用浏览器缓存,否则将通过自动增加不同的参数来确保浏览器缓存失效timeoutSeconds:3000,//3秒后超时,如果为0则永不超时load:function(type,data,evt){alert(data);},//typeshouldbeload,dataisthatwewantederror:function(type,error){alert(error.message);},//errorisdojo.io.Errortimeout:function(type){alert(请求超时!);}});你也可以用一个handle来处理所有的事件dojo.io.bind({url:要请求的页面地址mimetype:text/html,//请求的页面的类型,应该设置为与你请求页面类型对应的mimetypetimeoutSeconds:3000,//3秒后超时,如果为0则永不超时handle:function(type,data,evt){if(type==load){alert(data);}//dataisthatwewantedelseif(type==error){alert(data.message);}//dataistheerrorobjectelse{;}//othereventsmaybeneedhandled}});如果没有在Request中指定所用的transport,则Dojo会自动的在已注册的transports中寻找能够处理这个Request的transport,如果不能找到,则返回指定的Request。下面是一个指定了transport的例子:dojo.io.bind({url:要请求的页面地址mimetype:text/html,//请求的页面的类型,应该设置为与你请求页面类型对应的mimetypetimeoutSeconds:3000,//3秒后超时,如果为0则永不超时transport:XMLHTTPTransport,load:function(t
本文标题:dojo中文手册
链接地址:https://www.777doc.com/doc-5541705 .html