`
jelly
  • 浏览: 301533 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Dojo的痛苦经历

    博客分类:
  • AJAX
阅读更多

2007年6月项目准备开始了,刚来到一个新的项目组,什么都是新的,除了我自己。

需要一个新的框架来开发项目,香港的同事决定使用Dojo,DWR, 我开始学习使用dojo,时间很短,但是我还是基本上熟悉了dojo的基本控件和架构。在此基础上搭建起了项目的基本框架。这是一个单页面,基于ajax和dojo widget的系统,一切都那么的新奇,又充满挑战,但是既然dojo有这么多后台,又有香港同事的推荐,我显得自信满满。

框架搭建的同事,也开始后了紧锣密鼓的招兵买马,一起都像是从零开始。陆陆续续,招了5个程序员和一个测试员。开始了整个项目的快速开发,由于需求由香港负责,而且需求做的比较细致,基本上问题很少。Dojo 却是麻烦不断。

首先的一个坏消息是当我们做完了几乎全部300个页面的时候,dojo宣布0.43不在得到支持,取而代之是完全不同的dojo0.9。 而且dojo0.9 还不是稳定的版本,问题多多,让我们骑虎难下,最后还是决定按兵不动。 随之而来,是dojo1.0,dojo1.1 的陆续发布,但是一直都无法让我看到希望的曙光。 与之相对的是ext在国内的广泛使用和热烈追捧。

Dojo 的控件有很多奇怪的地方,日期选择控件的行为非常怪异,与国内的使用习惯很不相同。而且样式极其丑陋,当字体放大缩小的时候更是丑陋。显示的格式和保存的格式需要分别指定。我们修改了大量的代码。

dojo 的下拉框也被用户投诉,过滤之后一定要再选择一次或者按回车才能选定结果,前台值和后台值分开操作也带来很多不变。

dojo 的验证文本框颜色现实有bug,我们不得不修改代码

dojo的对话框也有问题,对话框中无法在弹出对话框。对话框的操作和控制很不灵活。

js代码不利于管理,容易发生命名冲突。

 

致命的问题发生在项目的后期,在客户的系统进行测试时发现。dojo的性能非常差,在赛扬2G的电脑上,一个页面显示的时间竟然需要17秒。简直就是噩梦。

另外使用dojo的对话框时出现cpu占用100%而且一直不回落下来。

页面载入完成的时候,它有将整个页面重新刷新一次,又需要花费额外的5到8s时间,不仅花费更多的时间,而且严重影响客户体验。

 

还有开发过程中碰到的无数问题,虽然一个一个被解决,但是无疑是一次一次痛苦的煎熬。

 

最后,在性能面前,我被dojo彻底打败,如此的速度是任何客户都无法忍受的,客户不可能为了这个系统全部升级电脑cpu。而且还有很多未知的问题可能还没有被发觉,不如内存泄露,可能导致资源耗尽,内存耗尽。cpu 的占用可能在使用时间长了之后越来越高,等等,这些都是我担心的问题。

 

使用Ajax或者说Rich client,一定要谨慎啊。使用新的技术和框架,一定要谨慎,这是我的教训,希望给同行们一个参考。

 

分享到:
评论
72 楼 loocao 2009-05-04  
...咋都说得这么恐怖呢...
71 楼 hite 2009-02-18  
cscs31 写道
crazybull 写道
学习DOJO TREE 学到吐血...

Tree如果用静态的还好吧,动态的我也在研究中。

大哥们,别吓我,我可唯你们首是瞻啊!!
70 楼 namuzhen 2009-02-18  
你好,我最近也在做DOJO的一个树形结构,但DOJO懂得不是太多,麻烦高手给小弟一个例子看看,行吗?
主要是通过两个表,一个是Class表,一个是Student,动态的获取数据。结构如下:
班级一
    姓名一
         具体资料(sex,age,fistName,LastName)
    姓名二
         具体资料(sex,age,fistName,LastName)
    .......
班级二
    姓名一
         具体资料(sex,age,fistName,LastName)
    姓名二
         具体资料(sex,age,fistName,LastName)
    .......

.......

请高手多多指教!小弟感觉不尽!
联系方式:QQ  297178644
69 楼 internetafei 2008-10-20  
dojo.back   

href base
一起用的时候,back ,forword不能用,怎么解决。
68 楼 cscs31 2008-08-21  
crazybull 写道
学习DOJO TREE 学到吐血...

Tree如果用静态的还好吧,动态的我也在研究中。
67 楼 crazybull 2008-08-21  
学习DOJO TREE 学到吐血...
66 楼 fyting 2008-07-19  
runthu 写道
dojo面向组件的开发思想,就凭这点要远远胜过ext,其实很多大厂商都在支持dojo,至于移植、性能,都是有解决方案的。

dojo的那套UI框架设计太烂,EXT与之相比成熟多了,看看layout的实现吧。绝大多普通人的用眼睛看的问题都没解决,dojo却偏偏支持WAI,真是很强大……
65 楼 cscs31 2008-07-16  
感觉dojo很需要IDE的支持,如果只靠文档还不如去看src,如果有工具支持将会很好,毕竟dojo的代码还是比较复杂的,不敢轻易动之。
另外,最近出了一个DojoToolbox,个人感觉不错,推荐大家使用。
64 楼 KKFC 2008-07-16  

引用
dojo面向组件的开发思想,就凭这点要远远胜过ext,其实很多大厂商都在支持dojo,至于移植、性能,都是有解决方案的。


“面向组件的开发思想”,runthu能否具体谈谈?
63 楼 runthu 2008-07-16  
dojo面向组件的开发思想,就凭这点要远远胜过ext,其实很多大厂商都在支持dojo,至于移植、性能,都是有解决方案的。
62 楼 cjim 2008-07-03  
我目前选择DOJO,主要是LICENSE问题,但是DOJO的文档不全让我觉得很烦,不知道别的怎么样?
61 楼 hemuxiao 2008-07-01  
现在在 用EXT2.0..研究了一个多月....新项目已经在用.
60 楼 sp42 2008-06-17  
Ajax UI之乱弹
       自从去年年头小弟初接触YUI-EXT/EXT以来,幸得各方玩家和用户的厚爱,(省去铺垫的前言...)
       这一切,当然与Ajax大潮渐起之时势密切相关。对于开发者来说,最引人入胜的莫过于层出不穷的Ajax框架了。由于JavaScript语言自身的特殊性,造成了各框架之间的设计风格之间的迂回不同——这虽说不上百家争鸣,但亦算琳琅满目,——甚至给人花多眼乱的感觉。但激动人心的开源JS 库却不多,较典型库有Dojo、Ext了。这些之中,最令人嗤嗤称奇的恐怕就是Jack Slocum的EXJ库了。EXT最初以基于BSD许可的YUI库为基础,利其跨浏览器的方案,以及Observer观察者模式的事件系统,再进一步拓展,并只限UI组件方面的拓展,如Layout、Grid、Tree 等等。从Jack去年一人单枪匹马开发,到现在各大厂商为其用户(可平滑集成到ADOBE AIR内),以及社区的反馈来看,EXT可谓后起之秀。——不过,状况就会如此地顺利下去吗?
       可以预测,实力、财力雄厚的Dojo自然不会立即被斩下马,新一轮的冲击波(1.0)值得期待。“野人(yahoo)”怀里的YUI有大师级人物Douglas Crockford压阵,岂会只配被别人扩展的命?JQuery速度跃进之后,下一欲占领的高度正是UI;Ajax.Net更是大部分MS开发者不二之选择。
edit:2007-7-22
59 楼 3rd eye 2008-06-17  
想不到国内有这么多人关注DOJO, 感谢KELLEY的引子.谈谈自己, 一个JS的菜鸟学习DOJO 五个月后的体会.

DOJO在BS结构中的地位类似于MFC在CS结构中的地位, 而prototype, jquery等轻量级的JS框架类似于BASIC在CS结构中.DOJO1.1是目前为止体系最完善,功能最强, 扩展性最高的JS框架.它瞄准的应用是RIA.无论从性能上, 还是从体系上, DOJO1.0 同 DOJO 0.9之前的版本相比有天壤之别.当然高性能的东西学习起来要时间长一些. 但是随着学习的深入, 前期投入的时间在开发调试的后期会加倍的补偿回来, 尤其是在一些需要持续开发,升级的项目中.随着RIA应用的普及, 类似DOJO的重量级的JS框架会越来越重要. STRUCT集成DOJO的事实已经清楚的表明DOJO在业界的地位. 只是DOJO的文档还比较差, 而且几乎都是ENGLSIH, 这局限了在国内的应用. 好在这种情况在迅速改变, DOJO的文档在最近已经有了很大的改观.

RIA的应用不可避免地要频繁AJAX请求, 和大量的JS程序. 合理使用DOJO的一些技术, 比如 cache, build, lazy load, local storage, etc可以极大地提高速度.在这方面, DOJO提供的多种工具应该可以满足绝大部分的应用.在目前国外的应用中, DOJO1.1的性能, 包括速度,扩展性和稳定性已经得到公认的赞扬. 当然最重要的还是好的程序结构. DOJO强大的功能可以充分保证实现复杂的结构.

尽管DOJO还有许多需要改进的地方, 但是可以毫无疑问地说, 基于DOJO体系设计的严密和完整, DOJO将会是将来市场中几个统治性的JS框架之一.
58 楼 pyzheng 2008-06-07  
fkpwolf 写道
个人认为一般的web页面用标准的html模式开发就足够了
如果让dojo蔓延每个页面,容易形成依赖关系
页面开发强调的应该是开发效率和开发的灵活性,而不是页面的美观

57 楼 cats_tiger 2008-06-06  
shatuo 写道
KKFC 写道
dojo的朋友们,不要自己骗自己了
顶楼上的
就很想说怎么不用yui,学习人家js架构也是瞒不错的

说dojo好的人的能力比较强,看中的(猜得)是dojo的易扩展性,能改成一个适合自己的样子,我不熟悉dojo,觉的dojo比较适合“个性化”,widget和render等等全是要自己去做。我猜在一些高手眼中,dojo就是一种框架了(猜得)。dojo的licence太宽松了,这可能就是大家用它的原因之一。

同意。以前用dojo就是自己扩展,可惜时间和能力有限,做出来的东西和人家Ext一比...唉。
http://cats-tiger.iteye.com/blog/160169
56 楼 fkpwolf 2008-06-05  
个人认为一般的web页面用标准的html模式开发就足够了
如果让dojo蔓延每个页面,容易形成依赖关系
页面开发强调的应该是开发效率和开发的灵活性,而不是页面的美观
55 楼 athene11 2008-06-04  
我也发现过DOJO的性能问题,跟了下JS,发现有个地方有明显的死循环,改了就好了。
其实开源的东西有时候需要自己优化它!不完全拿来就用。
54 楼 williamou 2008-06-02  
<div class='quote_title'>比较同意楼上的说法。。我的项目现在也在用dojo,不过是最新的版本1.1,感觉不错。</div>
<div class='quote_title'>以前用过0.4的版本,的确是很多问题,但能够看到dojo还是在不断进步和完善中。</div>
<div class='quote_title'>ajax的应用对于传统的页面肯定是更占资源,特别IE下的内存泄露是个需要注意的问题。</div>
<div class='quote_title'>另外提一下dojo的学习曲线的确比较陡,如果是一个时间很紧的项目,而dojo又是作为新技术的话,真的要好好做考量了。。</div>
<div class='quote_title'>yiaduo 写道</div>
<div class='quote_div'>
<div class='quote_title'>大哥,dojo基本上是所有ajax框架里面最好的。a11y, i18n,gfx这些,可以说大而全,但是又能灵活装配。<br/></div>
<div class='quote_title'>从0.4.3到0.9的迁移也不是那么困难的。</div>
<div class='quote_title'>你说的一些widget的bug的问题,每个框架都有,至于命名空间冲突的问题,我看dojo在这方面是最好的,真不明白你是怎么做的。</div>
<div class='quote_title'>至于性能问题,那是你没有做package, 引起了过多的同步装载,怪不了dojo的。</div>
<div class='quote_title'>至于界面样式的问题,dojo确实默认的theme难看了点。不过,我想没有太多公司直接拿着某个框架的default theme直接上吧。<br/></div>
<div class='quote_title'><br/></div>
<div class='quote_title'>jelly 写道</div>
<div class='quote_div'>
<p>2007年6月项目准备开始了,刚来到一个新的项目组,什么都是新的,除了我自己。</p>
<p>需要一个新的框架来开发项目,香港的同事决定使用Dojo,DWR, 我开始学习使用dojo,时间很短,但是我还是基本上熟悉了dojo的基本控件和架构。在此基础上搭建起了项目的基本框架。这是一个单页面,基于ajax和dojo widget的系统,一切都那么的新奇,又充满挑战,但是既然dojo有这么多后台,又有香港同事的推荐,我显得自信满满。</p>
<p>框架搭建的同事,也开始后了紧锣密鼓的招兵买马,一起都像是从零开始。陆陆续续,招了5个程序员和一个测试员。开始了整个项目的快速开发,由于需求由香港负责,而且需求做的比较细致,基本上问题很少。Dojo 却是麻烦不断。</p>
<p>首先的一个坏消息是当我们做完了几乎全部300个页面的时候,dojo宣布0.43不在得到支持,取而代之是完全不同的dojo0.9。 而且dojo0.9 还不是稳定的版本,问题多多,让我们骑虎难下,最后还是决定按兵不动。 随之而来,是dojo1.0,dojo1.1 的陆续发布,但是一直都无法让我看到希望的曙光。 与之相对的是ext在国内的广泛使用和热烈追捧。</p>
<p>Dojo 的控件有很多奇怪的地方,日期选择控件的行为非常怪异,与国内的使用习惯很不相同。而且样式极其丑陋,当字体放大缩小的时候更是丑陋。显示的格式和保存的格式需要分别指定。我们修改了大量的代码。</p>
<p> </p>
<p>dojo 的下拉框也被用户投诉,过滤之后一定要再选择一次或者按回车才能选定结果,前台值和后台值分开操作也带来很多不变。</p>
<p>dojo 的验证文本框颜色现实有bug,我们不得不修改代码</p>
<p>dojo的对话框也有问题,对话框中无法在弹出对话框。对话框的操作和控制很不灵活。</p>
<p>js代码不利于管理,容易发生命名冲突。</p>
<p> </p>
<p>致命的问题发生在项目的后期,在客户的系统进行测试时发现。dojo的性能非常差,在赛扬2G的电脑上,一个页面显示的时间竟然需要17秒。简直就是噩梦。</p>
<p>另外使用dojo的对话框时出现cpu占用100%而且一直不回落下来。</p>
<p>页面载入完成的时候,它有将整个页面重新刷新一次,又需要花费额外的5到8s时间,不仅花费更多的时间,而且严重影响客户体验。</p>
<p> </p>
<p>还有开发过程中碰到的无数问题,虽然一个一个被解决,但是无疑是一次一次痛苦的煎熬。</p>
<p> </p>
<p>最后,在性能面前,我被dojo彻底打败,如此的速度是任何客户都无法忍受的,客户不可能为了这个系统全部升级电脑cpu。而且还有很多未知的问题可能还没有被发觉,不如内存泄露,可能导致资源耗尽,内存耗尽。cpu 的占用可能在使用时间长了之后越来越高,等等,这些都是我担心的问题。</p>
<p> </p>
<p>使用Ajax或者说Rich client,一定要谨慎啊。使用新的技术和框架,一定要谨慎,这是我的教训,希望给同行们一个参考。</p>
<p> </p>
</div>
<p> </p>
</div>
<p> </p>
53 楼 xly_971223 2008-05-31  
基于prototype js 自己写js Class就可以了,免得用别人的框架那么麻烦
不过要有js高手 而且需要些是时间
现在ajax框架有点泛滥 而稳定的 被大家接受的没有几个,贸然选择很可能导致项目延期或者失败,所以在选择这些不成熟框架的时候一定要格外谨慎

相关推荐

    DOjo中文使用手册

    DOjo中文使用手册 DOjo中文使用手册是DOjo Toolkit的详细使用手册,涵盖了DOjo的安装、使用、调试等方面的知识点。本手册适合新手和有经验的开发者,旨在提供一个全面的DOjo使用指南。 DOjo安装 DOjo提供了三种...

    dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程

    1. **模块系统**:Dojo使用AMD(Asynchronous Module Definition)模块定义协议,允许异步加载模块。`require`和`define`是两个关键函数,`require`用于加载模块,`define`用于定义模块。 2. **dojo/_base**:这是...

    Dojo框架使用教程

    本教程将深入探讨Dojo框架的使用,帮助开发者更好地理解和应用这一工具。 首先,从`dojo-release-0.9.0.tar.gz`这个文件名可以看出,这是一个Dojo框架的早期版本,版本号为0.9.0。在学习过程中,了解不同版本间的...

    dojo中文文档-dojo手册

    通过使用dojo.require和dojo.provide,开发者可以实现代码的模块化,提高代码复用性和可维护性。 Dojo的dojo.query方法类似于jQuery的选择器,用于选取页面中的DOM元素。此外,Dojo还提供了一套强大的DOM操作API,...

    dojo文档 dojo文档 dojo文档

    dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档

    DOJO 学习笔记 dojo

    在 Dojo 中,使用 `dojo.require` 来声明所需的模块和包,类似于其他编程语言中的导入或使用语句。 `djConfig` 是 Dojo 的全局配置对象,允许你在页面加载前设置 Dojo 的行为。例如,`isDebug` 属性可以设置为 `...

    dojo 1.9 Tutorials(使用说明)

    在使用Dojo时,通常会先加载这个基础模块。 3. **dojo/ready**: 用于在DOM准备就绪或页面完全加载后执行指定的函数,是Dojo中的一个重要概念,确保在执行代码时,DOM已经完全构建完毕。 4. **dojo/store**: 提供了...

    dojo js dojo js

    dojo js dojo js dojo js dojo js dojo js dojo js dojo js

    dojo控件的使用和入门心得

    ### Dojo控件的使用和入门心得 #### Dojo简介及其优势 Dojo是一个功能强大的JavaScript框架,专门设计用于简化富互联网应用(RIA)的开发。作为一种DHTML Toolkit,Dojo封装了大量的常用功能,旨在提高前端开发...

    精通Dojo by Dojo之父

    Dojo是一个非常强大的、面向对象的、开源的JavaScript工具箱,它为开发富客户端Ajax...学习完本书后,读者不仅能熟悉Dojo框架的使用,还能了解Ajax框架的工作原理,最重要的是,还能随心所欲地开发出自己的RIA应用。

    Dojo 入门 + Dojo 工具包系列 + Dojo 使用技巧 ......

    在使用Dojo进行Ajax通信时,Dojo的`dojo.xhr`模块提供了与服务器端进行异步数据交换的接口。它可以处理各种HTTP请求类型,如GET、POST、PUT和DELETE,支持JSON、XML等多种数据格式,为开发者提供了统一的API。 Dojo...

    使用Struts_Dojo插件

    首先,为了使用Struts Dojo插件,你需要在JSP页面的顶部添加`&lt;%@ taglib prefix="sx" uri="/struts-dojo-tags" %&gt;`的taglib指令,这使得页面能够识别并使用Struts Dojo提供的标签。接着,确保将插件的jar文件复制到...

    使用Dojo框架

    Dojo是一个用JavaScript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets, Burstlib, f(m)),这也是为什么叫它a unified toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些、...

    使用Dojo,JSON开发ajax

    ### 使用Dojo与JSON开发AJAX应用 #### Dojo与JSON简介 Dojo是一个开源的JavaScript框架,专门设计用于简化富互联网应用(RIA)的开发。它提供了丰富的UI控件和强大的工具集,使得开发者能够轻松创建高性能的前端...

    dojo快速入门文档

    本文档旨在帮助初学者快速掌握 Dojo 的基本用法,并通过几个实用示例介绍如何在项目中使用 Dojo。 #### 二、环境搭建与基本配置 为了能够开始使用 Dojo,首先需要确保项目中有正确的文件结构和必要的配置。根据...

    dojo练习

    【dojo练习】是一个关于JavaScript库Dojo Toolkit的学习资源集合,主要涵盖了Dojo的源码解析、工具使用以及一些实用API的教程。Dojo Toolkit是一个强大的前端开发框架,它提供了丰富的功能,包括DOM操作、事件处理、...

    dojo精品中文教程(包一)

    很不错的中文教程!文件太大分3个包! 目录如下: dojo精品中文教程 Dojo.1.0 Practice Note [1] ...使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果

    dojo精品中文教程(全)

    分三个包上传时,第三个包好像传不上去,我给整合了一下,打在一个包里上传了! dojo精品中文教程 ...使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果

    dojo常用方法总结

    ### Dojo常用方法总结 Dojo是一个开源的JavaScript框架,用于构建高性能的富客户端Web应用程序。它提供了一系列功能强大的工具和API,可以帮助开发者更轻松地处理DOM操作、AJAX调用、用户界面组件构建等任务。本文...

    DOJO中文手册【出自dojo中国】

    DOJO中文手册是针对JavaScript库Dojo的详细指南,源自中国的本地化版本,旨在帮助开发者理解和使用这个强大的工具包。Dojo是一个开源的DHTML工具集,由nWidgets、Burstlib和f(m)等多个项目的合并发展而来,因此被...

Global site tag (gtag.js) - Google Analytics