写点什么

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

  • 2009-12-28
  • 本文字数:2256 字

    阅读完需:约 7 分钟

近日 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上找到关于 Dojo JavaScript 的更多信息,看看 Dojo.connect() 大会也是一个不错的选择。

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

2009-12-28 03:173737
用户头像

发布了 88 篇内容, 共 273.3 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

第11周总结

娄江国

王者荣耀为什么不使用微服务架构?

程序员生活志

第11周作业

娄江国

python自动生成一整月的排班表

不会写诗的王维

Python

提高GIT中代码质量的七点优秀实践

程序员生活志

git 经验总结

质量门禁:Verigreen开启Git的Commit门禁

陈磊@Criss

linux入门系列7--管道符、重定向、环境变量

程序员潘Sir

Linux centos 运维 linux命令 管道符

Devops与敏捷二者能否结合?

禅道项目管理

DevOps Scrum 敏捷开发

linux入门系列9--用户管理及文件权限控制

程序员潘Sir

Linux centos centos7 linux运维 linux用户权限

要老婆吗? AR一键生成的那种

程序员生活志

​JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!​

xcbeyond

Java 新特性 JDK1.8 Optional JDK1.8新特性

物联网SIM卡和SIM卡真的不是一回事

华为云开发者联盟

人工智能 物联网 华为云 传感器 SIM卡

非IT行业大企程序员讲述MIS系统开发案例

Learun

敏捷开发 企业信息化 企业管理 .net core 「Java 25周年」

区块链技术助力甘肃建食安信息追溯平台 为食品安全“立规矩”

CECBC

食品追溯 食品安全

网页游戏

小端taro

火眼云CEO张陆鹏:A轮融资5000万,解密国内ABM生态首位玩家

ToB行业头条

【Kafka】消费者客户端小结(java)

guoguo 👻

企业信息化怎么构建?

代码制造者

大数据 低代码 企业信息化 零代码 编程开发

37岁程序员被裁,想用6月工资跪舔领导划掉被裁名额,结果蒙了!

程序员生活志

linux入门系列6--软件管理之rpm和yum仓库

程序员潘Sir

Linux centos 运维 rpm yum

英特尔神经拟态芯片Loihi大显身手 帮助轮椅上的儿童实现独立生活

最新动态

INT类型知多少

Simon

MySQL

CHAR与VARCHAR详解

Simon

MySQL

linux入门系列8--shell编程入门

程序员潘Sir

Linux centos Shell linux命令 linux编程

如何让我的简历有价值、有亮点

escray

学习 面试 简历

一位男程序员的英语学习之路

盛安德软件

可能是首个支持部署 Deno 前后端应用的部署工具

binggg

taro GitHub 大前端 deno Node

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

开源,轻松实现RTC与SIP互通

anyRTC开发者

WebRTC 编码 SIP 源码解析

区块链技术正向平台化、组件化、集成化演进

CECBC

大数据 区块链技术 科技

终极学习法,你能学会任何东西--程序员的学习之路

盛安德软件

Dojo 1.4发布:性能改进、稳定性提升_Java_Dio Synodinos_InfoQ精选文章