【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

【JVM故障问题排查心得】「内存诊断系列」Xmx和Xms的大小是小于Docker容器以及Pod的大小的,为啥还是会出现OOMKilled?

洛神灬殇

jdk JVM 12 月 PK 榜 OOMKilled

架构训练营-模块二作业

Sam

架构实战营

运维进阶训练营 -W10H

赤色闪电

运维

AI-002-十分钟理解ChatGPT的技术逻辑及演进(前世、今生)

非典型产品经理笔记

NLP 大模型 人工智能’ ChatGPT

音与影的魔法红线:双Vivid标准带来的超高清之变

脑极体

架构训练营模块二作业

gigifrog

架构训练营

2023-01-01:remix-ide是浏览器的ide,官方已经提供地址,但是需要连接外网。如果是内网,需要自己在服务器里搭建remix-ide;另一种方式是用remix-ide的桌面版。这里只讨论

福大大架构师每日一题

云原生 k8s k3s 福大大 remix-ide

模块五作业

Ryan

构架

校招前端一面经典react面试题(附答案)

beifeng1996

React

CleanMyMac2024专业Mac清理软件下载

茶色酒

CleanMyMac2024

滴滴前端常见面试题

loveX001

JavaScript

云端高性能计算,华为云ECS助力企业数字化转型

秃头也爱科技

【web 开发基础】PHP类的构造方法和析构方法(59 )

迷彩

面向对象 PHP基础 构造方法 析构方法

老周的 2022 年终总结

老周聊架构

年终总结 12月月更

【web 开发基础】PHP中的访问方法(60)

迷彩

PHP基础 property 访问方法 类的封装 封装性

2022年度总结-个人成长视角

非典型产品经理笔记

个人成长 网络安全 年终总结

OpenTelemetry系列 (五)| OpenTelemetry Java Instrumentation二次开发指南

骑牛上青山

Java 调用链 OpenTelemetry 微服务调用链 agent

2022前端二面react面试题(边面边更)

beifeng1996

React

vue为什么v-for的优先级比v-if的高?

bb_xiaxia1998

Vue

校招前端二面高频vue面试题

bb_xiaxia1998

Vue

弹性公网IP支持多产品灵活绑定或解绑,能为企业提供独立公网IP资源!

秃头也爱科技

CleanMyMac2024一款超好用的Mac清理优化工具

茶色酒

CleanMyMac CleanMyMac X CleanMyMac X2023

从这两道题重新理解,JS的this、作用域、闭包、对象

loveX001

JavaScript

面试官让你说说react状态管理?

beifeng1996

React

模块4

KING

校招前端面试题集锦

loveX001

JavaScript

AI-001-火爆全网的聊天机器人ChatGPT能做什么

非典型产品经理笔记

nlp 人工智能’ ChatGPT

【web 开发基础】PHP面向对象中类的继承(61)

迷彩

面向对象 extends PHP基础 类的继承 类的实例化

针对Web应用的攻击模式

穿过生命散发芬芳

HTTP 1月月更

架构设计模块三作业

附加信息

架构训练营

从输入URL到渲染的过程中到底发生了什么?

loveX001

JavaScript

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