给Dojo正名

发现Dojo板块下最新的帖子竟然还是2009年,唏嘘不已,JavaEye作为一个以专业著称的技术社区,竟然没人讨论国外广泛被各大公司采用的Dojo,实属不幸!于是注册此ID,希望能在此为Dojo做点贡献,也为帮助大家不要错过这款当今功能最为强大的企业级Ajax框架。

本人用Dojo超过2年时间,做过几个大型项目均取得了很好的效果。而且还为dojo贡献了不少源代码,相信关于Dojo,我可以帮助大家解决大多数问题。

当今Ajax框架n分天下:JQuery, Prototype, ExtJS, YUI。。各有特点,我仅分析下比较熟悉的这几个框架

- JQuery的优势是轻巧,适合做一些页面修饰,如动态菜单,可以相当程度取代flash做一些动画和特效。在OA等企业级应用采用JQuery基本属于自掘坟墓。
- Prototype作为最早的Ajax框架,主要提供javascript和dom操作的功能扩展,应该说prototype是我最熟悉的框架,也是我接触的最早的框架。但其界面组件的缺失和扩展性的缺乏使得其应用有限。而且后期越来越臃肿,限制了其继续发展。
- ExtJS, 一纸License绝对可以把稍有远见的技术决策者挡于门外,任何想自己有点核心竞争力的团队,绝不会把基础建立在一个以项目为单位被收费的基础之上。ExtJs通过专业而一致的外观,和可以帮助快速上手的Sample Code,确实有相当大的诱惑力,能让快速开发成为可能,但一但出现问题,维护成本其实相当高。因为有太多的Code你可能都不明白是做什么用的。
- YUI,恕未用过,不做评论,个人感觉与ExtJS类似。

再来看Dojo,Dojo中既包含了prototype这样的功能扩展库(dojo),又包含了界面组件库(dijit),还包含了功能也许不太稳定的扩展类库(dojox),但其中不乏功能强大的常用OA功能,例如Grid, Chart等。看到一些对dojo的抱怨,但大多都不是dojo的错,只是因为还不够了解。

在此列举dojo的几个绝对优势,这些几乎都是企业级应用的必要条件:
- 完全的面向对象,完善的继承机制。Dojo程序的入口通常就让初学者困惑,在prototype,JQuery上,$(id)常常在初始化应用时大量使用,但Dojo中$(id)(即dojo.byId)绝对是使用最少的函数。前者更像过程式编程,Dojo却让你不得不真正的面向对象。
- 完善的包管理机制,通过和java类似的源文件管理模式,有效的解决了大型应用中的类依赖关系问题。从而能够更好的将程序模块化。
- 基于内容构建,通过对html的parse来生成dijit,解决了ajax与搜索引擎的矛盾。
- dijit机制,不得不说这是一个天才模式。真正的了解之后,你会发现基于dijit机制,基于dojo已有基础控件,你很容易构造出自己的强大控件库,这为dojo提供了强大的扩展功能。

当然对于小型应用,我仍然会推荐使用dojo,这让你的代码更容易维护和扩展。至于开发速度,这取决于你对dojo的熟悉程度。但如果用JQuery,优势仅在于能找到大量的第三方控件,只是数量太多,如何选择常常让人苦恼万分。。


时间仓促,先写这么多,欢迎大家讨论。本帖绝非想引起争论,能帮助适合用dojo的人用好dojo,便是希望的结果。








你可能感兴趣的:(jquery,Ajax,prototype,企业应用,dojo)