写点什么

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:173745
用户头像

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

关注

评论

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

融云通信周边能力上新啦!一键 Get 美颜、CDN 服务

融云 RongCloud

CDN 人脸识别

设计模式:今天你设计了吗?

SFLYQ

设计模式 服务器端开发 后端技术

Python从ECS内网拉取OSS数据

梦想橡皮擦

3月月更

网络安全kali web安全 Kali之msf简单的漏洞利用

学神来啦

网络安全 渗透测试 WEB安全 kali kali Linux

Go语言实战之切片的内部实现和基础功能

山河已无恙

Go 语言 3月月更

Flutter 构建常见的App页面框架

岛上码农

flutter ios 安卓 移动端开发 3月月更

VuePress 博客优化之开启 Algolia 全文搜索

冴羽

Vue 搜索 vuepress 博客搭建 Algolia

Python 学习路线(2022)

AlwaysBeta

Python django 编程语言 学习路线 编程入门

还在用递归,试试迭代吧

爱笑的小雨

Discuz! ML远程代码执行(CVE-2019-13956)

喀拉峻

网络安全

好书推荐 ——《噪声:人类判断的缺陷》

天择

好书推荐 认知偏差 噪声 3月月更

我要跳槽了!

IC男奋斗史

职业规划 芯片行业思考

2022官方文档部署MAVEN最新最全

北极的大企鹅

中间件 环境安装 部署与维护

活动预告 | ArchSummit全球架构师峰会

第四范式开发者社区

人工智能 机器学习 数据库 架构师 热门活动

商品库存管理和秒杀系统设计(19/100)

hackstoic

技术方案 互联网应用技术方案

乘数智之风,为世界造舟筏:女性在当下如何创造?

脑极体

模块九

撿破爛ぃ

架构训练营

模块 9 作业(毕业设计)

miliving

猿桌派第 2 季回归,报名赢现场录制机会!

融云 RongCloud

程序员

工作以后流的泪,就是当初校招时脑子进的水

IC男奋斗史

职业规划 芯片行业思考

python方法——defaultdict详解

Wjq

Python 字典 3月程序媛福利 3月月更 defaultdict

英特尔Sierra Forest,市场最需要的能效核至强处理器

科技新消息

教你如何搭建一个骗子举报/信息查询的平台

H

搭建平台 网络安全信息安全、

基于区块链技术的超级账本(Hyperledger) - 从理论到实战

汪子熙

区块链 智能合约 云平台 Go 语言 2月月更

gRPC 简介实践

yuexin_tech

gRPC

AI提取图片里包含的文字信息-解决文字无法复制的痛点

DS小龙哥

3月月更

图文详解:Kafka到底有哪些秘密让我对它情有独钟呢?

浅羽技术

同人于野,平常无边 | 对话 StarRocks 的三位女性工程师

StarRocks

数据工程师 38妇女节

安全实战:webshell的几种免杀方式

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

Committer 蔡正昕专访:勇敢迈出第一步,做开源没有那么难

Apache Pulsar

架构 云原生 中间件 Apache Pulsar 开源社区

超级群、群组、聊天室,IM 产品的场景化「特异功能」

融云 RongCloud

即时通讯 IM

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