面向对象的JavaScript框架-Dojo
2010-10-14 13:41:26 阿炯

Dojo是一个强大的面向对象JavaScript框架。主要由三大模块组成:Core、Dijit、DojoX。Core提供 Ajax,events,packaging,CSS-based querying,animations,JSON等相关操作API。Dijit是一个可更换皮肤,基于模板的WEB UI控件库。DojoX包括一些创新/新颖的代码和控件:DateGrid、charts、离线应用、跨浏览器矢量绘图等。同时在bsd协议下发布使用。

为什么选择dojo
1.dojo是一个很好的基础架构

它可以非常有效地分离页面中的Structure、Presentation、Behaviour,这对于实现Ajax组件unobtrusive的目标非常有帮助。

有人问:那么,同样是基础架构,你为什么不选择Prototype呢?
当然,Prototype对于开发一些Ajax效果也是非常有帮助的,但是Prototype的设计目标和dojo有很大的不同。
Prototype 的设计目标是扩充JavaScript的功能,使得可以以类似于Ruby的方式来编写JavaScript。 Prototype主要是对于JavaScript语言本身的一些底层的扩充,另外解决了一些跨浏览器的问题。但是Prototype还是太底层了,本身提供的功能非常少,基于它来建造复杂的Ajax组件(例如,一个功能完善的Grid组件)仍然非常困难。

而Rico呢,仍然谈不上是一个框架,Rico和Scriptaculous都只是基于Prototype建造的Ajax效果库。 Rico的Live Grid太原始了,这也是我放弃Rico的一个原因,而且Rico这半年来就没有什么大的发展。

我们并不是要否定Prototype,而是经过考察发现Prototype很难支持我的目标。我们的目标就是建造一个全面的Ajax组件库,dojo恰好对于支持这个目标非常有帮助。dojo其实是一个组件模型,类似于Spring,用来支持大规模的组件化开发。组件模型的作用就是增强代码的重用,这对于提高开发效率是至关重要的。

2.dojo的背后有强大的支持
dojo现在已经是众多开源框架的选择,包括:
* WebWork
* Tapestry
* Eclipse ATF
* MyFaces

这个列表还会随着时间的推移而扩大,dojo的开发团队由Alex Russell领军,人数众多,力量非常强大。

3.dojo的组件比较丰富,而且目前的开发非常活跃,这里是一些组件列表,也可以在这里提出新的组件需求。
http://dojo.jot.com/WidgetWishlist

有一个正在开发的Grid组件,按照功能描述来看非常强大,值得高度注意。
http://dojo.jot.com/GridWidget

这样以来就可以减轻我们的大量沉重的工作。

最新版本:1.6
这个版本是 Dojo 迈向 2.0 前的一个重要里程。改进内容包括对象存储、HTML5数据属性、Widget.watch() 、WebSocket、图表等功能。

官方主页:http://www.dojotoolkit.org/
IBM参考文档:http://www.ibm.com/developerworks/cn/web/wa-dojotoolkit/

相关组件介绍
------------------------------
Dijit
Dijit 基于 Dojo,也是学习 Dojo 扩展的一个好起点。可以用来创建非常漂亮的 Web 2.0 GUI。支持多语种,甚至支持不同语种的文字书写方向以及本地化数字,日期等等。

------------------------------
DojoX
DojoX 是 Dojo 主功能的一个扩展区,可以说是新功能和新想法孵化器。在这里可以找到很多最新奇的功能组件。

目前 DojoX 项目主要扩展了数据结构与算法、数据处理与通信、实用工具、图形 API 以及 Web UI 等。

涉及到数据结构与算法的项目包括了 DojoX Collections、DojoX Encoding 等。Collections 定义了很多非常有用的数据集合,包括了数组(ArrayList)、二叉树(BinaryTree)、字典(Dictionary)、迭代器 (Iterator)、队列(Queue)、有序列表(SortedList)、堆栈(Stack)。这些集合的使用将大大提高程序开发的效率以及程序的质量。Encoding 不仅提供了字符串与字符编码的转换,还提供了对称算法河豚(Blowfish)和 MD5 数字摘要算法等。

DojoX Data、Embed、I/O、JSON、XML、RPC 等扩展了 Dojo 的数据处理与通信能力。其中Data 项目提供了对更多数据格式的支持,包括了对 csv 文件以及 Google、Picasa 等提供的 API 的支持等等。

DojoX 的图形 API 扩展了 Dojo 的动画效果,并提供了 2D、3D 绘图的支持。DojoX Fx 通过对 dojo core 以及 dojo fx 的扩展提供了多种动画效果;gfx 提供了一系列矢量绘图的方法;而 gfx3d 则提供了一些简单的 3D 绘图 API。

而更加丰富的 Web UI 以及 Web 小部件也是 DojoX 的一大亮点。功能强大的 Grid、实用的 Charting、以及 DojoX Image 和 DojoX Layout 使得基于 dojo 开发的 Web UI 更加丰富。DojoX Widgets 中还提供了更加丰富的小部件可以满足大部分应用开发的需求。

该文章最后由 阿炯 于 2014-08-15 08:54:32 更新,目前是第 4 版。