BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Dojo 1.4发布:性能改进、稳定性提升

| 作者 Dio Synodinos 关注 4 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2009年12月29日. 估计阅读时间: 8 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

近日Dojo团队发布了Dojo 1.4,该版本的性能和稳定性都得到了极大的提升,同时增加了大量的新特性。

虽然该版本主要解决的是稳定性与性能问题,但我们还是向其中增加了大量新功能,这些功能都非常棒。所有重要的变化都在1.4的发布声明(包括迁移指南)中进行了阐述,由于内容太多无法在这里一一说明。简而言之,从简单的使用上的变化(比如现在可以将dojo.Animation回调传递给产生动画的结点)到全新的API(如在dijit._Templated之外的dojo.cache提供了构建缓存池的功能)都有涉及。某些改变只是将此前的“private” API公开了而已。比如:现在dojo._Animation已经变成了公开的dojo.Animation、而dojo._contentHandlers变成了dojo.contentHandlers,这向高级用户开放了Ajax传输配置,同时官方承诺会永远保留这些API。

本文作者使用Firefox 3.5.5运行TaskSpeed,结果表明同样的示例应用使用Dojo 1.4需要687ms,而使用Dojo 1.3.2则需要701ms。在虚拟机的IE 8上执行该示例,Dojo 1.4和1.3.2则分别需要2613ms和2694ms。

我们发现Dojo DOM API变得与jQuery非常相像了,James Burke说到:

我想为Dojo Core所做的一件事就是使其DOM API,尤其是与dojo.NodeList(dojo.query()调用及Dojo的CSS选择器方法的返回对象)相关的方法与jQuery达成一致。jQuery说其API会与广大的开发者产生共鸣。这也同样符合Dojo的设计哲学,我们应该提供这些API以简化开发者的使用。Dojo 1.4的变化则反映了这个目标:
  • dojo.ready(),仅仅是dojo.addOnLoad()的一个别名。
  • dojo.NodeList-traverse:这是一个辅助模块,用于向dojo.NodeList中增加方法。其目标是向NodeList中引入那些jQuery中早已存在的方法以进行DOM遍历,尤其是:children、closest、parent、parents、siblings、next、nextAll、prev、prevAll、andSelf、first、last、even及odd等方法。
  • dojo.NodeList-manipulate:这也是一个辅助模块,用于向dojo.NodeList中增加方法。其目标是向NodeList中引入那些jQuery中早已存在的方法以操纵DOM,尤其是: innerHTML、html、text、val、append、appendTo、prepend、prependTo、after、insertAfter、before、insertBefore、remove、wrap、wrapAll、wrapInner、replaceWith、replaceAll及clone等方法。
  • IO管道主题:通过dojo.subscribe/dojo.publish获悉IO事件。在任意IO调用发生时可以轻而易举地加载通用的“loading”指示符。这些主题并非采取jQuery的实现方式,而是利用了dojo.publish/subscribe来实现的。

InfoQ就Dojo的此次发布采访了SitePen CEO及Dojo Toolkit的联合创建者Dylan Schiemann:

InfoQ:对于你来说,此次发布的亮点在于哪?

Dylan:我已在http://www.sitepen.com/blog/2009/12/10/dojo-1-4-released/上对这些内容进行了详细的阐述。
  • IO管道主题
  • dojo.cache
  • dojo.contentHandlers
  • dojo.hash支持原生的HTML5 onhashchange事件
  • 对NodeList(dojo.query的返回值)的遍历和操纵
  • dojo.ready(dojo.addOnLoad的简化版本)
  • 对Dijit API与Dijits集合的大量精化,同时为DojoX增加了一些新的widget
  • 增加了DataChart widget,对绘图进行了一些增强
  • 新增了dojox.drawing
  • 编辑器增强,为Dijit和DojoX增加了新的插件
  • 更快的Grid,增加了EnhancedGrid
  • 为TreeGrid增加了ForestStoreModel
  • 改进了GFX
  • 增加了dojox.jq,这是一个试验性的模块,旨在尽可能地匹配 jQuery API,但其底层使用的还是Dojo
  • Dojo构建系统开始支持Google Closure Tools编译器
  • 速度上的巨大提升,尤其对IE
对Grid的改进和增强以及dojox.drawing的引入给人留下了深刻的印象,同时在IE下性能的巨大提升也是一个亮点。

InfoQ:好像你们已经不再支持Firefox 2而只支持最新版的Safari、Chrome和Opera(仅仅是核心功能)了。这些支持够么?那移动平台呢?

Dylan:不再支持某些浏览器并非意味着Dojo在该浏览器上就不能使用了,这只是表明我们并没有在一个QA/测试周期中运行Dojo而已。如果某些功能出现了Bug导致无法运行在旧版的Firefox上,我们一般都会对此作出强调说明。对于Safari和Opera来说,用户一般都会自动更新浏览器,因此我们觉得只支持最新版的浏览器并没有什么问题。一旦用户报告了问题,我们一般都会进行修复,哪怕是不支持的浏览器。从某种程度上来说,这类似于YUI对一等和二等浏览器支持的不同。

InfoQ:随着Dojo 1.4的发布,James Burke很想将其DOM API转换成“jQuery中已有的那些方法”。这与plugd所做的有什么关系么?Peter Higgins将plugd称作“最喜欢的jQuery味道”。你认为这两个框架是否变得越来越相像呢?

Dylan:plugd上所进行的工作、dojox为jQuery API兼容性所进行的工作以及dojox.jq上的工作的目的都是希望提升开发者操纵DOM的效率。jQuery提供了非常棒的API来操纵DOM,我们也想为自己的用户提供这种支持。plugd是进行的首次尝试,而dojox上的工作则是将这些内容迁移到Dojo上的第一步。最终一旦测试完毕并达到性能上的要求且API稳定时,这些重要的工作都将迁移到Dojo Core中。

关于此次发布的更多细节请查看发布声明文档。Dojo基于BSD License和Academic Free License 2.1双重许可,可以从这里下载,也可以从这两个 CDN处引用。

大家可以在InfoQ上找到关于DojoJavaScript的更多信息,看看Dojo.connect()大会也是一个不错的选择。

查看英文原文:Dojo 1.4 Released with Improved Performance and Stability

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

DOJO的JS文件太大了 by Ma Karl

Dojo的js文件太大,js下载Dojo的js文件浪费了大量的时间。

Re: DOJO的JS文件太大了 by Zhang Kaifeng

这在IE6下有这样的可能,但对于其他的浏览器,如今的客户机性能足以忽略掉这一点。

Re: DOJO的JS文件太大了 by Zhang Kaifeng

Re: DOJO的JS文件太大了 by Zhang Kaifeng

我想说的是dojo的性能,现在根本不是问题。

www.ibm.com/developerworks/cn/web/wa-lo-dojo-perf/

Dojo 还在啊? by Wei Zijun

dojo似乎一直叫好不叫座啊. 市场占有率应该在 yui jquery extjs mootools 之下吧. dojo虽然开源但是那代码风格实在是...orz

Re: DOJO的JS文件太大了 by liao wei

Dojo Base并不大,不用gzip压缩88k,压缩后28k,说话请负责任。

Re: Dojo 还在啊? by liao wei

请问你看过dojo 1.4的源码吗?请问你写过两万行以上的纯Ajax应用吗?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

7 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT