JavaEye论坛被封贴“给Dojo正名”整理

来源:互联网 发布:python help 退出 编辑:程序博客网 时间:2024/04/28 20:21

前几天在JavaEye论坛发贴一篇,说了说Dojo的优势所在,但引起了不少争论,JavaEye的论坛机制又不允许争论发生,遂被隐藏。

也许有些观点有人不认可,但是通过大家的回帖和讨论,还是留下了不少值得总结的东西,呵呵,整理一下做个记录。

 

帖子地址:http://www.javaeye.com/topic/762686

帖子内容:

----------------------------------------------------------

发现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,便是希望的结果。

-----------------------------------------------------



精彩回帖摘录:

 

EldonReturn回帖:

企业级开发还是应该有Dojo那样的比较严谨得框架

点评:第一个支持者,泪奔!Dojo确实很严谨。


 

ruanqi回帖:

严重支持楼主, DOM操作是jQuery的强项,而Dojo在这方面比jQuery快上一倍!

 


这是实际测试页面: http://dante.dojotoolkit.org/taskspeed/

点评:性能其实是Dojo的强项-_-

 

vtsuper回帖:

支持數主!!!
Extjs雖強,但需要付費,這點令我不會選擇它

Prototypejs是我一直用的,可是相比其他framework,它更新愈來愈慢,而且愈來愈不活躍了,scripty2聽說會有很大改進,但等了很久也沒有推出正式版,我怕到它推出正式版時大部份的人遷往jQuery了

Jquery的確是最熱門的framework,遺憾他沒有統一以及官方的UI,不像Extjs統一了coding的方法,看來太過散亂了,假如官方推出一個像Jquery easyUI的東西繼續向Extjs的型式開發,我相信它的前途無限

最後是Dojo,唯一一個像Extjs有統一界面,可減少各programmer於UI的煩惱..建立大型項目時可減少不少時間


樓主有沒有一些項目可作示範?

点评:言之有物,看来有不少前端开发经验,呵呵。

 

 

blueion回帖:

平心而论,相较dojo而言JQuery学习门槛比较低,dojo有很多人看着就觉得难。其实dojo和jQuery可比性不是很多,dojo是大而全的toolkit,包罗万象;jQuery比较适合中小型的web应用,容易上手。

点评:Dojo需要改变让人望而生畏的形象

 

 

kjj 写道
对楼主这极其主观的观点不敢苟同,厚此薄彼的态度不利于你的推广dojo,jquery 已经深入人心,dojo复杂的语法和它早期无数的bug已经毁了他的市场,jquery才出来几年,你好好想想,既然你要替dojo翻身,那就拿出点说服力的内容来,光这样主观臆断是不能达到目的的!!



感谢回帖!
- 厚此薄彼的其实是JavaEye,Dojo在此一年多没一篇帖子,实在和它在国外的流行程度不成正比。比如IBM的所有产品都是用的Dojo。如果要体验,可以看http://jazz.net/,使用一下这个web版的工具,可以发现Dojo可以做到很强大。
- 为何说我极其主观。。。我只评论了我用的最多的3个框架间的优缺点,每一点自我感觉都已经很具体了。如果说的不对,欢迎指出。
- Dojo的语法就是javascript的语法,何来Dojo复杂而其它不复杂。。
- 早期无数bug的问题,我从dojo 0.43一直用到现在的1.5。影响到项目的Dojo bug真的屈指可数。而且大多可以找到work around。

开源的产品需要大家的贡献,如果您发现过很多bug,不妨说出来或者提交ticket到社区,帮助改进Dojo。

点评:火药味渐浓。。

 

我是做domino开发的,现在新的domino 8.5里面已经内置了dojo,发现这个东西还是挺全的,但是苦于没有什么好的资料可以学习,不知道是否能推荐一下,最好有什么相关的样例

点评:domino也用dojo了,outlook呢?

 

yhjhoo 写道
我在使用Dojo时,一直会有莫名其妙的JavaScript语法错误,就连他们的Demo都有,对楼主的看法,实在不敢恭维。或许再等他发张几年吧

但是我在使用jquery的时候从来没有碰到过这样的情况,可能还在于使用的人吧




JavaScript语法错误,这个JSEclipse就能帮你检查出来。如果说的是异常,其实你每究根到底解决一次,你对Dojo的掌握就会更进一层。

如果有Demo的错误,能否贴出来地址看看?但我其实基本没看过Demo。要了解功能,看Dojo里的test case就可以了。

 

点评:编程需要严谨的态度,理性应该战胜感性。

 

yeaha 写道
08年用过一下dojo,那时候的版本还不稳定,尝试一段时间就没用了,这几年也没关注过,我想问问楼主,你在以往的使用过程中碰到得最多的dojo问题是什么?解决起来方便吗?
想请楼主除了谈谈长处之外,最好也说一下dojo不足的地方,清楚缺点才能够真正的了解优点



任何产品当然都有不足,说起来曾经我也一度想放弃Dojo,但现在庆幸当时坚持了下来。任何一个开发人员都不可能精通所有框架,所以,选对一个框架至关重要。

从我的体验,以及认识的用Dojo的体验看,Dojo所有的缺点都围绕着一个中心:难用,或者说,上手难。
因为上手难,所以很多人觉得难用。Dojo里所有功能都是对象,你不得不以模块化的方式思考问题;Dojo里设计模式无处不在,比如你要处理数据,必须懂DataStore,这个学起来就要很久。不学它,很多事情却又做不了。甚至最简单的DropDownList,你也会因为找不到addItem(text, value)这样的方法而抓狂。
但熟悉了Dojo思考问题的方法,一切都会得心应手。什么展示层,数据层,逻辑层,控制层那都是顺其自然的结果。这让你的应用更容易维护扩展,有更长的声明周期。长远看,降低了开发成本。

要说用Dojo中碰到最多的问题,那就是性能问题。
当Web成为应用平台,所有的UI和数据都通过JavaScript处理,性能问题确实很让人头疼。但这跟Dojo无关,在我用其它框架时,性能问题同样存在。Dojo在这方面也在努力,例如新引入的为widget基类加入的connect方法,就会在widget销毁时自动调用,帮助你去自动disconnect一个绑定事件。避免可能的内存泄漏。

dojo分为3部分,作为扩展的dojox其实是功能很多却质量层次不齐。其中不乏精品,但需要你对其有足够的了解才能用的得心应手。我相信在将来dojox一定会像javax一样,成为不可或缺的一块。

 

点评:Dojo确实仍需努力。

 

october731 写道
为什么说 在OA等企业级应用采用JQuery基本属于自掘坟墓。 ?



JQuery最大的优势是轻巧,容易上手,其链式调用设计的也非常人性化。所以JQuery集结了一大批第三方插件开发者,其中不乏精品,只要花时间寻找,也许任何需求都能找到相应的实现;也不乏做的大而全的,但终归这种比不上Ext或Dojo的大而全。

大型应用的特点是会需要各种各样的组件,而不是一两个对页面的修饰和点缀。

如我前面所述,第三方插件用的太多有几个问题:
1. 需要大量时间调研同一功能的插件,哪个更好。
2. 来自不同地方的插件之间没有代码重用。比如Grid插件和Tree插件来自不同的组织,他们也许都有类似的键盘操作逻辑,但却各自实现。
3. 产品的稳定和维护依赖于不同的开发组织,或许是个人,或许是团队,随便一个停止开发,或者开始收费,就会出现问题。依赖的越多,将来越容易出现问题。
4. 因为JQuery核心的轻量级,各个插件就可以各显神通,各用各的设计模式和思路。要维护这些组件和代码,那将需要花大量精力去了解他们的思路,增加了维护和学习成本。而用统一框架可以一通百通,熟悉了一个Dijit,其它学起来就快了。

另外,JQuery的架构并不适合大型开发,它缺乏模块化开发,模块之间互相通信的机制,这使得功能难以扩展;缺乏对源代码的管理,当一个项目有上千个源文件,这种模式很难维护。

点评:惹怒了jQuery大量粉丝:(

 

kenshinlk回帖:

群众的眼睛是雪亮的!你懂的

点评:高人啊!帖子随后即被隐藏。。