写点什么

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

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

    阅读完需:约 7 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

近日 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:173521
用户头像

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

关注

评论

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

聊聊Java中代码优化的30个小技巧

苏三说技术

人人可参与开源活动正式上线,诚邀您来体验!

阿里巴巴云原生

阿里云 开源 云原生 龙蜥社区

免费的低代码开发平台有哪些?

优秀

低代码 低代码开发平台

国际权威认可!OceanBase入选Forrester Translytical数据平台报告

OceanBase 数据库

oceanbase

一周活动速递|深入浅出第8期;Meetup成都站报名进行中

OceanBase 数据库

我们常用于猜数字游戏的二分查找算法怎么用python实现呢?

迷彩

算法 二分查找 7月月更 经典算法

Rainbond插件扩展:基于Mysql-Exporter监控Mysql

北京好雨科技有限公司

云原生 #Kubernetes#

博云容器云、DevOps平台斩获可信云“技术最佳实践奖”

BoCloud博云

容器 DevOps 云原生 容器云

越来越成熟的Rust,都应用了哪些场景呢?

非凸科技

rust

喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位

3DCAT实时渲染

5G

关于云XR介绍,以及5G时代云化XR的发展机遇

3DCAT实时渲染

XR 云XR

【帮助中心】为您的客户提供自助服务的核心选项

Geek_da0866

Cloud XR面临的问题以及Cloud XR主要应用场景

3DCAT实时渲染

云流化和云桌面有什么关系

3DCAT实时渲染

「行话」| 用DevOps高效交付游戏,是种什么体验?

极狐GitLab

git DevOps gitlab 敏捷开发 游戏开发

ThreadLocal夺命11连问

苏三说技术

多线程

多租户软件开发架构

力软低代码开发平台

大型仿人机器人的技术难点和应用情况

优必选科技

机器人

3DCAT v2.1.3新版本发布,这三大功能更新你不容错过!

3DCAT实时渲染

云VR:虚拟现实专业化的下一步

3DCAT实时渲染

Cloud XR

8 年产品经验,我总结了这些持续高效研发实践经验 · 研发篇

尔达Erda

产品 程序员 云原生 研发 效能

Auditing相关注解

Damon

7月月更

如何选择数字孪生可视化平台

3DCAT实时渲染

数字孪生

Go语言系列:Go从哪里来,Go将去哪里?

小黑豆豆

后端 阅读 Go 语言 7月月更

RTC 性能自动化工具在内存优化场景下的实践

字节跳动视频云技术团队

性能优化 RTC 内存优化

关爱一线防疫工作者,浩城嘉业携手高米店街道办事处共筑公益长城

联营汇聚

实时云渲染有哪些优势

3DCAT实时渲染

实时云渲染

Baklib:制作优秀的产品说明手册

Baklib

更新|3DCAT实时云渲染 v2.1.2版本全新发布

3DCAT实时渲染

为什么数字化未来取决于3D实时渲染

3DCAT实时渲染

实时云渲染

如何创建一个有效的帮助文档?

Geek_da0866

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