AJAX架构之Dojo篇


Posted in Javascript onApril 10, 2007

作者:hopesoft
出处:http://www.51ajax.com

一、前言
自去年开始,AJAX一下成了关注的技术热点,各种AJAX框架迅速的发展了起来,其中又分为客户端AJAX架构,服务器端AJAX架构等,其中DojoToolkit做为一个优秀的客户端AJAX架构,被越来越多的人所关注,学习。自去年开始,AJAX一下成了关注的技术热点,各种AJAX框架迅速的发展了起来,其中又分为客户端AJAX架构,服务器端AJAX架构等,其中DojoToolkit做为一个优秀的客户端AJAX架构,被越来越多的人所关注,学习。

二、Dojo简介

作为早期的开源AJAX架构之一,Dojo开始于2004年9月,网址是 http://www.dojotoolkit.org,由JotSpot的Alex Russell所领导。

Dojo是一个开源的JavaScript工具包,本身预置了很多模块,可以实现完整的轻量级窗口组件及很多功能。Dojo的包加载机制(Package System)可以实现动态加载所需模块,而且用户可以编写自己的Dojo扩展模块,有很好的灵活性。

三、技术特点

1.文件结构

Dojo目前最高版本号是0.3.1,它的文件主要由一个包含主要功能的核心代码文件(Dojo.js)和众多的Javascript文件组成。使用时可以根据包机制,动态载入所需模块。

根据核心代码包含模块的不同,又细分为以下多个版本:
·AJAX版本:可以创建带有AJAX应用程序,集成复杂的可视效果,并使用事件模块。
·Widget版本:包括与小器件实现松散耦合的 HTML 和CSS 模板能力,提供明确分离的样式、内容和逻辑。
·Event and I/O版本:包括事件模块及I/O模块
·Event版本:包括事件模块
·Kitchen Sink版本:该版本包括整个工具集合

以上版本分别适用于不同的场合。用户也可以根据自己的需求重新构建自己的核心代码文件,只包含自己常用的模块,以避免频繁动态加载常用的模块。

2.程序结构

Dojo官方的定义中,将Dojo称之为Toolkit(工具包),不是Framework(只是Framework的一部分),也不是Library(在Library之上又加了一层封包系统)。Dojo包括了Javascript本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库。

如下图:(原地址http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book16)

AJAX架构之Dojo篇

从图中也可看出,Dojo的设计结构非常合理,且扩展性非常强,能够不断增加新的功能,且保证程序高效的运行。

四、官方资源

Dojo的官方网站有以下资源,可以帮助我们很快的熟悉Dojo的结构,当然,因为Dojo有丰富的功能,要完全掌握还需要在实际开发中逐渐掌握。

1. Dojo手册(The Dojo Manual)
网址:http://manual.dojotoolkit.org/
系统地介绍Dojo的机制,使用方法,示例代码等

2.Dojo邮件列表(The Dojo Mailing Lists)
可以讨论交流在使用Dojo中遇到的问题,或希望改进的建议
申请加入地址:http://dojotoolkit.org/mailman/listinfo/dojo-interest
查看存档:http://news.gmane.org/gmane.comp.web.dojo.user

3.Dojo错误跟踪系统(Bug Tracking)
网址:http://trac.dojotoolkit.org/
可以提交有效地发现bug,提交bug,以便能够及时地消除Dojo中的bug

4.代码仓库(The Dojo Subversion Repository)
网址:http://trac.dojotoolkit.org/browser
可以很方便地获得最新版本的Dojo程序包

5.The Dojo Wiki
网址:http://dojo.jot.com/
Dojo Wiki的内容类别相对比较丰富,涉及到Dojo的各个方面。

6.IRC
聊天室地址:irc.freenode.net

7.Dojo程序包中附带的Demo程序
提供了8大类近30个Demo程序,可以在实践中更快地掌握Dojo的用法。

提示:推荐加入Dojo的邮件列表,并仔细研究示例代码,这样能更快地掌握Dojo的使用方法。

五、发展前景

1.技术层面
与其它AJAX框架相比,Dojo设计的包加载机制(Package System)和模块化(Libraries)的结构,能保持更好的扩展性,提高执行性能,减轻了用户开发的工作量,并保持一定的灵活性(用户可以自己编写扩展)。

2.市场层面
Dojo现在发展迅猛,得到广泛的支持,并成立了Dojo 基金会 , IBM 、AOL 、SUN这些大公司和WebWork、Tapestry、Open Laszlo等开源团队都是dojo基金会的成员,雄厚的后盾保证了Dojo可以持续的发展下去。

3.开发团队
在Alex Russell的领导下,Dojo的开发团队有着强大的开发能力,从目前版本提供的功能、质量及更新的速度我们就可以看出来了。另外近期Dojo将会发布0.4.0。

4.用户群体
由于Dojo出色的设计,越来越多的AJAX专家及新手加入到了Dojo的开发者中,这些开发者也会相应地动Dojo的发展。

5.学习资源
Dojo官方网站有着丰富的学习资源(见“官方资源”一节),可以帮助人们更快地掌握Dojo,减少学习成本。

六、结语

Dojo可以帮助开发人员开发大型的AJAX项目,并有助于构建健壮的代码,节省开发时间。Dojo背后强大的支持后盾也可以保证持续不断的补充新功能,有助于我们脱离低层重复的工作,专注于在此基础上进行开发。

Javascript 相关文章推荐
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
Jquery 的扩展方法总结
Oct 01 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
js点击button按钮跳转到另一个新页面
Oct 10 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
Aug 15 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
Vue声明式渲染详解
May 17 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
angular异步验证防抖踩坑实录
Dec 01 Javascript
Dojo之路:如何利用Dojo实现Drag and Drop效果
Apr 10 #Javascript
给moz-firefox下添加IE方法和属性
Apr 10 #Javascript
用javascript父窗口控制只弹出一个子窗口
Apr 10 #Javascript
javascript 控制弹出窗口
Apr 10 #Javascript
javascript应用:Iframe自适应其加载的内容高度
Apr 10 #Javascript
用javascript动态调整iframe高度的代码
Apr 10 #Javascript
Javascript下的keyCode键码值表
Apr 10 #Javascript
You might like
php数组查找函数总结
2014/11/18 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python3基础之list列表实例解析
2014/08/13 Python
Python实现图像几何变换
2015/07/06 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
python Kmeans算法原理深入解析
2019/08/23 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
市场营销职业生涯规划书范文
2014/01/12 职场文书
面试后的感谢信范文
2014/02/01 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
优秀语文教师事迹
2014/05/18 职场文书
大学生村官考核材料
2014/05/23 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
治庸问责工作总结
2015/08/11 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
调研报告的主要写法
2019/04/18 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers