- 浏览: 2473847 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
随着Ajax应用越来越多,各种Ajax Library(Prototype),Ajax Framework(DWR),Ajax Toolkit(Dojo,YUI)也日渐丰富起来,有没有办法将这些结合起来呢?类似Spring的做法,当然我没法整出一个IoC的微内核将各种Ajax“粘合”起来,但是将这些Ajax可重用的组件加以整合应该是没有问题的,这样即可以避免重复发明轮子,还可以针对各种Ajax进行扬长避短,形成一套比较全面的Ajax解决方案。同时也增加了开发人员选择自己熟悉Ajax组件的灵活性。
目前我们公司已经形成一套基于Ajax的完整的产品,封装了自己的Ajax前后台通讯机制以及提供了可重用的客户端组件,我尝试了一下将我们的产品与Dojo Toolkit进行整合。下面是我的做法,整合的是Dojo ComboBox Widget,它实际上是一个Auto Completion组件,类似Google Suggest。
从Dojo提供的测试类test_ComboBox.html入手,加debugger进行跟踪调试,理清Dojo Widget的加载流程。
经过跟踪调试,对Dojo的Widget有了一个大致的了解:首先是加载当前需要的JavaScript文件,然后对整个html页面进行解析。在页面上使用widget有三种方式:一种就是在html元素上添加一些dojo能解析的属性,如
其中的dojoType,autocomplete, onValueChanged都是dojo能够识别的属性,这个有些类似typestry的做法。第二种就是使用DojoML的写法:
这种写法有些变态,跟jsp中的自定义标签基本就是一回事,只是把解析的过程从后台移到了前台来做,后来看到有些框架也这么干,也就没话说了。
还有一种写法是使用javascript在页面加载完成之后,在指定的html元素创建widget:
在对元素解析创建的时候同时利用dojo定义的combobox html模版以及css模版完成在页面中插入最终的combobox控件的目的。
接下来看看Dojo ComboBox如何通过ajax与后台通讯,Dojo ComboBox提供了两种自动完成方式:一种是将所有的数据下载到前台缓存,然后在前台根据用户输入的数据从缓存中匹配出自动完成所需要的数据列表。另外一种就是根据用户每次输入的数据实时向后台发送请求获得要自动完成的数据,当然这个数据也会以用户输入的内容为key,以得到的数据为value进行缓存。对于两种方式,Dojo通过不同的DataProvider来实现(dojo.widget.incrementalComboBoxDataProvider和dojo.widget.basicComboBoxDataProvider),这一点非常精妙,让我非常佩服。而这两个类都是通过dojo.declare(“className”, “parentClassName”, constructor, declarationBody)这种方式来做的,这个也和我们以往的做法有别。总之就是比较精妙啦!
Dojo向后台发送请求的过程封装在dojo.io.bind()这个方法中,而我们有自己的一套前后台通讯机制,因为必须想办法将dojo.io.bind()替换成我们的做法来达到最终整合的目的,因为Dojo ComboBox的数据交互都是封装在DataProvider里面的,因为我们只需要实现自己的DataProvider就可以搞定了,这样我们无须修改Dojo的源代码,而且还可以使用Dojo的继承机制,从已有的DataProvider集成复写掉我需要替换的方法,这让我有了写Java的感觉。
通过上面的处理,就可以使用我们自己的前后台通讯机制来完成请求数据的目的。
接下来就是生成我们的页面,添加dojo加载js代码的脚本:
下面要加载的控件部分html代码:
这样我们的整合工作就完成了,对了还有文件的目录结构:
Webapp
|--adapter(存放所有用于整合的js文件)
|------dojo
|---------widget
|-----------DoradoComboBox.js
|--dojo(dojo的所有js文件)
|------src
|------dojo.js
|--js(我们自己组件库的js文件)
|--WEB-INF
结论
通过扩展之后还是发现了不少问题:
1、由于集成的两套东西都会在Object.prototype, Array.prototype, Function.prototype上加一些自己的东西,因此这样非常容易带来命名上的冲突,已经碰到这个问题。
2、由于二者都会使用一些全局性的函数,变量等,这样也会存在潜在的冲突,不过目前还没有碰到。
3、多套js库要同时加载,客户端的压力是不是大了些?性能可以接受吗?目前还没有测试不得而知。
俱往矣,一统天下,还看JSI.^_^
1、Object.prototype上加东西是大忌,不考虑. Array.prototype, Function.prototype新增东西虽然方便,但是,也很容易发生冲突.用来做老版本兼容设计还不错.比如给ie5增加Function.prototype.apply ,Array.prototype.shift...
2、这个问题,JSI解决的很漂亮:)
3、JSI可以做到按需装载,只要导入页面上直接使用的类库,基本可以解决这个问题.使用装饰引擎,甚至可以不作任何编码,系统将根据标记自动装载所需类库.
预告一下,JSI2 Alpha将下周发布,装载效率也做了一些测试,届时我将准备一个比较详细的装载效率测试报告.
拭目以待!!!
所以应该考虑dojo的方式按需加载,而不是统统的一次性全部加载进来
错,dojo是不能做按需装载的.
我对dojo的了解不够多.引用一段radar的话:
谁说在dojo产品阶段require需要同步加载脚本的。为什么不打包成一个大的js文件。
关于dojo的很多抱怨是因为不了解dojo。
dojo确实很复杂,但可以抱怨复杂,但不能随便指责不是问题的问题啊!(不是说楼主啊)
Dojo如果真要做按需装载的话,那么必然导致浏览器阻塞,让用户去体验死机的感觉.
结论
通过扩展之后还是发现了不少问题:
1、由于集成的两套东西都会在Object.prototype, Array.prototype, Function.prototype上加一些自己的东西,因此这样非常容易带来命名上的冲突,已经碰到这个问题。
2、由于二者都会使用一些全局性的函数,变量等,这样也会存在潜在的冲突,不过目前还没有碰到。
3、多套js库要同时加载,客户端的压力是不是大了些?性能可以接受吗?目前还没有测试不得而知。
俱往矣,一统天下,还看JSI.^_^
1、Object.prototype上加东西是大忌,不考虑. Array.prototype, Function.prototype新增东西虽然方便,但是,也很容易发生冲突.用来做老版本兼容设计还不错.比如给ie5增加Function.prototype.apply ,Array.prototype.shift...
2、这个问题,JSI解决的很漂亮:)
3、JSI可以做到按需装载,只要导入页面上直接使用的类库,基本可以解决这个问题.使用装饰引擎,甚至可以不作任何编码,系统将根据标记自动装载所需类库.
预告一下,JSI2 Alpha将下周发布,装载效率也做了一些测试,届时我将准备一个比较详细的装载效率测试报告.
很可惜,appeon的那套东西都差不多忘光了,是廖健吗?在北京混的如何?
在dojo.io.bind中可以设置text/javascript类型的交互模式,就像<AJAX in Action>里提到的以脚本为核心的交互,这对于实现前端动态的页面效果会带来极大的好处,而且不暴露JS内容,但这样必然增加流量,如何权衡?
下载html,xml流量就会比下载javascript要小吗?
所以应该考虑dojo的方式按需加载,而不是统统的一次性全部加载进来
同意,但是现在遇到一个这样的问题。
在dojo.io.bind中可以设置text/javascript类型的交互模式,就像<AJAX in Action>里提到的以脚本为核心的交互,这对于实现前端动态的页面效果会带来极大的好处,而且不暴露JS内容,但这样必然增加流量,如何权衡?
所以应该考虑dojo的方式按需加载,而不是统统的一次性全部加载进来
看了一下JSVM2与dojo整合的部分,里面通过extmodel机制来实现,我不知道extmodel的具体机制是怎么样的,但是看了一下对combobox的扩展,好像是对dojo的combobox采用JSVM2的方式重写了一遍,而且dojo的很多部分都是调用JSVM2来改写dojo的东西,这样整合之后,如果dojo更新了,JSVM2改写的部分是不是也要重写一遍?
不得不佩服JSVM作者的能力
目前我们公司已经形成一套基于Ajax的完整的产品,封装了自己的Ajax前后台通讯机制以及提供了可重用的客户端组件,我尝试了一下将我们的产品与Dojo Toolkit进行整合。下面是我的做法,整合的是Dojo ComboBox Widget,它实际上是一个Auto Completion组件,类似Google Suggest。
从Dojo提供的测试类test_ComboBox.html入手,加debugger进行跟踪调试,理清Dojo Widget的加载流程。
经过跟踪调试,对Dojo的Widget有了一个大致的了解:首先是加载当前需要的JavaScript文件,然后对整个html页面进行解析。在页面上使用widget有三种方式:一种就是在html元素上添加一些dojo能解析的属性,如
<select dojoType="combobox" style="width: 300px;" name="foo.bar1" autocomplete="false" onValueChanged="setVal1" >
其中的dojoType,autocomplete, onValueChanged都是dojo能够识别的属性,这个有些类似typestry的做法。第二种就是使用DojoML的写法:
<dojo:combobox style="width: 300px;" name="foo.bar1" autocomplete="false" onValueChanged="setVal1" />
这种写法有些变态,跟jsp中的自定义标签基本就是一回事,只是把解析的过程从后台移到了前台来做,后来看到有些框架也这么干,也就没话说了。
还有一种写法是使用javascript在页面加载完成之后,在指定的html元素创建widget:
var combo; dojo.addOnLoad(init); function init(){ combo = dojo.widget.createWidget("dojo:ComboBox", {name:"prog",autocomplete:false,dataUrl:"comboBoxData.js"}, dojo.byId("progCombo")); }
在对元素解析创建的时候同时利用dojo定义的combobox html模版以及css模版完成在页面中插入最终的combobox控件的目的。
接下来看看Dojo ComboBox如何通过ajax与后台通讯,Dojo ComboBox提供了两种自动完成方式:一种是将所有的数据下载到前台缓存,然后在前台根据用户输入的数据从缓存中匹配出自动完成所需要的数据列表。另外一种就是根据用户每次输入的数据实时向后台发送请求获得要自动完成的数据,当然这个数据也会以用户输入的内容为key,以得到的数据为value进行缓存。对于两种方式,Dojo通过不同的DataProvider来实现(dojo.widget.incrementalComboBoxDataProvider和dojo.widget.basicComboBoxDataProvider),这一点非常精妙,让我非常佩服。而这两个类都是通过dojo.declare(“className”, “parentClassName”, constructor, declarationBody)这种方式来做的,这个也和我们以往的做法有别。总之就是比较精妙啦!
Dojo向后台发送请求的过程封装在dojo.io.bind()这个方法中,而我们有自己的一套前后台通讯机制,因为必须想办法将dojo.io.bind()替换成我们的做法来达到最终整合的目的,因为Dojo ComboBox的数据交互都是封装在DataProvider里面的,因为我们只需要实现自己的DataProvider就可以搞定了,这样我们无须修改Dojo的源代码,而且还可以使用Dojo的继承机制,从已有的DataProvider集成复写掉我需要替换的方法,这让我有了写Java的感觉。
dojo.declare( "dojo.widget.incrementalDoradoComboBoxDataProvider", dojo.widget.incrementalComboBoxDataProvider, null, { //要替换的方法,使用自己的通讯机制 startSearch: function(/*String*/ searchStr, /*Function*/ callback){ if(this._inFlight){ // FIXME: implement backoff! } var cmd = getControl(this.searchUrl); cmd.parameters().setValue("searchString", searchStr); var _this = this; EventManager.addDoradoEvent(cmd, "onSuccess", function(command){ _this._inFlight = false; //convention: //1.the key must be "result" //2.the data format must be [["Alabama","AL"],["Alaska","AK"]] or [{"Alabama":"AL"},{"Alaska":"AK"}] var data = dj_eval(command.outParameters().getValue("result")); if(!dojo.lang.isArray(data)){ var arrData = []; for(var key in data){ arrData.push([data[key], key]); } data = arrData; } _this._addToCache(searchStr, data); callback(data); } ); cmd.execute(); this._inFlight = true; } } );
通过上面的处理,就可以使用我们自己的前后台通讯机制来完成请求数据的目的。
接下来就是生成我们的页面,添加dojo加载js代码的脚本:
<script type="text/javascript" src="./dojo/dojo.js"></script> <script type="text/javascript"> dojo.require("dojo.widget.ComboBox"); // 注意这里有一个定位的问题,查找路径必须加"..", // 因为dojo在查找DoradoComboBox.js的时候会从"/dojo"而不是"/"目录开始查找 // 最终使用xmlhttp加载的路径是/dojo/../adapter/dojo/widget/DoradoComboBox.js dojo.setModulePrefix("adapter.dojo.widget","../adapter/dojo/widget"); dojo.require("adapter.dojo.widget.DoradoComboBox"); </script>
下面要加载的控件部分html代码:
<input dojoType="ComboBox" dataUrl="cmdComboboxSearch" dataProviderClass = "dojo.widget.incrementalDoradoComboBoxDataProvider" style="width: 200px;" name="sample2" autocomplete="false" >
这样我们的整合工作就完成了,对了还有文件的目录结构:
Webapp
|--adapter(存放所有用于整合的js文件)
|------dojo
|---------widget
|-----------DoradoComboBox.js
|--dojo(dojo的所有js文件)
|------src
|------dojo.js
|--js(我们自己组件库的js文件)
|--WEB-INF
结论
通过扩展之后还是发现了不少问题:
1、由于集成的两套东西都会在Object.prototype, Array.prototype, Function.prototype上加一些自己的东西,因此这样非常容易带来命名上的冲突,已经碰到这个问题。
2、由于二者都会使用一些全局性的函数,变量等,这样也会存在潜在的冲突,不过目前还没有碰到。
3、多套js库要同时加载,客户端的压力是不是大了些?性能可以接受吗?目前还没有测试不得而知。
评论
13 楼
macrochen
2007-06-04
jindw 写道
俱往矣,一统天下,还看JSI.^_^
1、Object.prototype上加东西是大忌,不考虑. Array.prototype, Function.prototype新增东西虽然方便,但是,也很容易发生冲突.用来做老版本兼容设计还不错.比如给ie5增加Function.prototype.apply ,Array.prototype.shift...
2、这个问题,JSI解决的很漂亮:)
3、JSI可以做到按需装载,只要导入页面上直接使用的类库,基本可以解决这个问题.使用装饰引擎,甚至可以不作任何编码,系统将根据标记自动装载所需类库.
预告一下,JSI2 Alpha将下周发布,装载效率也做了一些测试,届时我将准备一个比较详细的装载效率测试报告.
拭目以待!!!
12 楼
jindw
2007-06-01
macrochen 写道
guoshiguan 写道
整合要考虑一下,下载的速度,一个prototype就已经有48K其他的加一下,可能会上百K这对网络不是什么好事啊,
所以应该考虑dojo的方式按需加载,而不是统统的一次性全部加载进来
错,dojo是不能做按需装载的.
我对dojo的了解不够多.引用一段radar的话:
radar 写道
谁说在dojo产品阶段require需要同步加载脚本的。为什么不打包成一个大的js文件。
关于dojo的很多抱怨是因为不了解dojo。
dojo确实很复杂,但可以抱怨复杂,但不能随便指责不是问题的问题啊!(不是说楼主啊)
Dojo如果真要做按需装载的话,那么必然导致浏览器阻塞,让用户去体验死机的感觉.
11 楼
jindw
2007-06-01
macrochen 写道
结论
通过扩展之后还是发现了不少问题:
1、由于集成的两套东西都会在Object.prototype, Array.prototype, Function.prototype上加一些自己的东西,因此这样非常容易带来命名上的冲突,已经碰到这个问题。
2、由于二者都会使用一些全局性的函数,变量等,这样也会存在潜在的冲突,不过目前还没有碰到。
3、多套js库要同时加载,客户端的压力是不是大了些?性能可以接受吗?目前还没有测试不得而知。
俱往矣,一统天下,还看JSI.^_^
1、Object.prototype上加东西是大忌,不考虑. Array.prototype, Function.prototype新增东西虽然方便,但是,也很容易发生冲突.用来做老版本兼容设计还不错.比如给ie5增加Function.prototype.apply ,Array.prototype.shift...
2、这个问题,JSI解决的很漂亮:)
3、JSI可以做到按需装载,只要导入页面上直接使用的类库,基本可以解决这个问题.使用装饰引擎,甚至可以不作任何编码,系统将根据标记自动装载所需类库.
预告一下,JSI2 Alpha将下周发布,装载效率也做了一些测试,届时我将准备一个比较详细的装载效率测试报告.
10 楼
liujx2005
2007-06-01
很好,我大力的支持
9 楼
macrochen
2006-12-12
norwaywoods 写道
看来你真是得了Appeon的真传啊。
很可惜,appeon的那套东西都差不多忘光了,是廖健吗?在北京混的如何?
8 楼
clmwy
2006-12-11
个人觉得AJAX在有些方面反而会影响到系统的速度.可以在一些特效方面使用,如果整个系统都是用它来做,有点不敢想象.
7 楼
norwaywoods
2006-12-07
看来你真是得了Appeon的真传啊。
6 楼
macrochen
2006-11-23
flyromza 写道
在dojo.io.bind中可以设置text/javascript类型的交互模式,就像<AJAX in Action>里提到的以脚本为核心的交互,这对于实现前端动态的页面效果会带来极大的好处,而且不暴露JS内容,但这样必然增加流量,如何权衡?
下载html,xml流量就会比下载javascript要小吗?
5 楼
flyromza
2006-11-23
macrochen 写道
guoshiguan 写道
整合要考虑一下,下载的速度,一个prototype就已经有48K其他的加一下,可能会上百K这对网络不是什么好事啊,
所以应该考虑dojo的方式按需加载,而不是统统的一次性全部加载进来
同意,但是现在遇到一个这样的问题。
在dojo.io.bind中可以设置text/javascript类型的交互模式,就像<AJAX in Action>里提到的以脚本为核心的交互,这对于实现前端动态的页面效果会带来极大的好处,而且不暴露JS内容,但这样必然增加流量,如何权衡?
4 楼
macrochen
2006-11-22
guoshiguan 写道
整合要考虑一下,下载的速度,一个prototype就已经有48K其他的加一下,可能会上百K这对网络不是什么好事啊,
所以应该考虑dojo的方式按需加载,而不是统统的一次性全部加载进来
3 楼
macrochen
2006-11-22
chpn 写道
前段时在这上面吵得很凶的JSVM2可以做得到: http://jsvm.org/forums/ 上面有对YUI、prototype和dojo的整合,但不完整
看了一下JSVM2与dojo整合的部分,里面通过extmodel机制来实现,我不知道extmodel的具体机制是怎么样的,但是看了一下对combobox的扩展,好像是对dojo的combobox采用JSVM2的方式重写了一遍,而且dojo的很多部分都是调用JSVM2来改写dojo的东西,这样整合之后,如果dojo更新了,JSVM2改写的部分是不是也要重写一遍?
引用
通过extmodules的方式将dojo完整地集成到jsvm中
主要做的改动如下:
1、修正了dojo.js中部分关于系统路径的代码以正确解析widget
2、用JSVM2的方式实现了dojo一部分底层包包括
dojo.lang,dojo.string,dojo.uri,dojo.debug等...
并且实现了dojo.html,dojo.dom,dojo.lfx等,支持dojo的Animation以及事件模型。
主要做的改动如下:
1、修正了dojo.js中部分关于系统路径的代码以正确解析widget
2、用JSVM2的方式实现了dojo一部分底层包包括
dojo.lang,dojo.string,dojo.uri,dojo.debug等...
并且实现了dojo.html,dojo.dom,dojo.lfx等,支持dojo的Animation以及事件模型。
不得不佩服JSVM作者的能力
2 楼
guoshiguan
2006-11-22
整合要考虑一下,下载的速度,一个prototype就已经有48K其他的加一下,可能会上百K这对网络不是什么好事啊,
1 楼
chpn
2006-11-20
前段时在这上面吵得很凶的JSVM2可以做得到: http://jsvm.org/forums/ 上面有对YUI、prototype和dojo的整合,但不完整
发表评论
-
使用JsonEditor开源组件写了一个Json Viewer
2014-07-06 09:06 12312工作中经常要查看一些无格式化的json数据, 下载了几个桌面的 ... -
code review 工具列表
2009-12-19 21:02 59211.代码格式检查checkstyle; ... -
常用正则表达式收集
2008-07-29 22:01 1705from:http://www.cnblogs.com/a31 ... -
用于获取url指定名称参数的js函数
2008-07-27 12:28 1985刚从csdn里面google到的, 笔记一下 functi ... -
用于转换Sql的一个小工具
2008-07-27 12:24 1804因为要在java中写大量的经过格式化后的sql脚本, 于是写了 ... -
REST学习笔记
2008-01-20 18:22 2559把《架构风格与基于网络的软件架构设计》博士论文大致看了一遍, ... -
FCKEditor定制两则
2008-01-20 01:21 2784FCKEditor是一个非常强大 ... -
为Validation.js增加中文日期验证
2008-01-13 00:31 3097还是以前同时发表在ajaxcn.org上的一片小文, 不过后来 ... -
基于prototype.js验证框架(validation.js)的三个应用
2008-01-13 00:24 2523也是很早发在ajaxcn.org上的一片文章, 现在proto ... -
本人对prototype.js进行的扩展
2008-01-13 00:06 1821很老的帖子了, 发在ajaxcn.org上,贴到这里,以后查找 ... -
对页面右键菜单, 选择屏蔽的屏蔽
2007-12-23 20:42 1837在浏览器地址栏中输入: javascript:void(win ... -
一个Ajax集成开发框架的布局重构之路
2007-02-08 14:22 3134发表于《程序员》2006年12期 一、背景介绍 随着web标准 ... -
AJAX一统天下之Rich Editor整合篇
2007-01-08 11:50 20762Rich Editor是我们 ... -
Comet,下一代Ajax?
2006-10-23 23:57 40376最近在看comet(server ...
相关推荐
DOJO是其中一款强大且功能丰富的AJAX框架,它提供了丰富的工具集、模块化系统以及对多种浏览器的兼容性,使得开发者能高效地构建复杂且高性能的Web应用。 本教程重点围绕“DOJO中文文档”,旨在帮助初学者快速掌握...
总结,"AJAX之Dojo实现登陆框"涵盖了使用Dojo库进行AJAX请求,构建无刷新登录表单,处理表单数据,以及相关的事件监听和响应处理。在实践中,还需要结合前端验证、后端安全措施以及用户体验设计来创建一个完整的登录...
dojo是JavaScript库中的一个强大工具集,特别以其Ajax功能闻名。dojo Ajax框架是dojo库的核心部分,它提供了高效、灵活且全面的解决方案,用于在Web应用程序中实现异步数据通信。Ajax(Asynchronous JavaScript and ...
综上所述,Dojo框架以其全面的功能和强大的性能,成为AJAX开发的首选工具之一。结合详尽的中文手册,无论是初学者还是经验丰富的开发者,都能从中受益匪浅。通过深入学习和实践,开发者可以利用Dojo构建高效、响应式...
在0.3.1这个版本中,它对AJAX的支持是其关键特性之一,让我们深入探讨一下这个版本中的AJAX功能及相关知识点。 1. **Dojo AJAX基础** Dojo的AJAX功能主要由`dojo.xhr`模块提供,它提供了一系列方法来发起异步HTTP...
【Dojo Toolkit】是本文的重点,它是一种开源的JavaScript工具包,主要针对客户端的AJAX应用。自2004年9月起,由Alex Russell领导的JotSpot团队创立,Dojo因其强大的功能和灵活性受到广泛的关注。Dojo的核心在于其...
本篇将深入探讨Ajax与Dojo,特别是基于Dojo的Ajax实践。 首先,让我们关注《Masting Dojo》这本书,它可能涵盖了Dojo的基础到高级概念。Dojo的核心特性之一是它的Ajax模块,名为`dojo.xhr`。这个模块提供了多种方法...
AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...
它与客户端的Ajax框架的整合也非常容易;本示例整合了jQuery 1.4版本框架,同时也使用dojo框架来完成struts2的属性页标签。 使用jQuery与Struts2可以非常轻松的编程。如果你熟悉jQuery框架,那么你可以“让程序飞...
这个压缩包包含了Dojo框架的一个早期版本——dojo-release-1.1.2,它对于了解Dojo的历史和学习Ajax应用程序的构建非常有价值。在JavaScript的世界里,Ajax(异步JavaScript和XML)技术允许网页在不刷新整个页面的...
dojo JavaScript框架是Web开发中的一个强大工具,特别在处理Ajax(Asynchronous JavaScript and XML)请求时,它提供了丰富的功能和高效的性能。Dojo的核心在于它的模块化系统,这使得开发者可以方便地导入和管理所...
AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...
在本案例中,我们关注的是dojo的Ajax功能,它允许开发者实现与服务器的异步通信,无需刷新整个页面。dojo的Ajax jar包是专门为Java环境设计的,可以无缝集成到基于Struts1或Struts2的Java Web应用程序中。 首先,让...
本篇将详细探讨DOJO中的AJAX相关知识。 1. **DOJO的dojo/_base/xhr模块** DOJO的核心模块`dojo/_base/xhr`提供了处理AJAX请求的基础API。主要包含xhr.get、xhr.post、xhr.put和xhr.delete等方法,分别对应HTTP的...