Dojo 1.4RC1 发布:性能提升、新的 Editor 插件

  • 张凯峰

2009 年 11 月 28 日

话题:JavaJavaScript语言 & 开发架构

著名开源 Javascript 工具库 Dojo 在两次发布 1.4 beta 的一个月后,终于在近日释出 1.4 RC1,同时也期望这是唯一一次的 RC 版本。

1.4RC1 的release notes宣称支持的浏览器包括:

  • Firefox 3 和 3.5。不再支持 Firefox 2。
  • 最新的 Safari 4 和 Chrome 3
  • IE6、IE7 和 IE8
  • 最新的 Opera 10(只包括 Dojo core)
  • 在上述全部浏览器中支持键盘操作(之前不包括 Safari 和 Chrome)

Dojo 部分的重要更新包括:



  • 新增 IO 管道主题,这些主题会在 dojo 使用的 IO 管道(比如 dojo.xhr*()、dojo.io.script.get() 和 dojo.iframe.send())事件中通过 dojo.publish 发布出来。
  • 新增 dojo.cache 方法,来获取或存储与 module 和 url 相关的字符串内容,这个方法也是 dijit 的 templatePath 方法功能的通用版本。开发者可以使用这个方法来从文件中获取所需的内容。
  • 把 dojo._contentHandlers 开放出来,允许开发者自定义处理 IO 返回内容的方式。
  • 不 再推荐使用 dojo.coord 方法,因为返回的结果对象是混合了 dojo.position 和 dojo.marginBox 的内容。其中的 x/y 基于边 框盒子模型,而 w/h 却代表了外边距盒子模型,这引起了大量的误解。现在 dojo.position 方法的新版本运行得更快。

对 Dijit widget 部分的重要更新包括:



  • dijit.Editor,修正了大量的 bug,同时具备更优的扩展性,并在 Opera 这样的浏览器中具有更佳的性能表现。另外还增加了一些新的插件,包括全屏、查看源码、打印和新页面。
  • dijit.Dialog,支持显示多个对话框。
  • dijit.Tree,支持多字符搜索,输入“al”会直接跳到以“al”开头的节点。支持多父节点,只要不会引起死循环。添加 onLoad() 事件支持。

DojoX 部分的更新则更多,这里恕不一一列举,具体细节请查看 release notes。

在从 1.3 升级到 1.4 的过程中,用户一般会碰到下面这些问题:

  1. 如果在自己的 widget 中使用了 templatePath,需要把它们更新成通过 dojo.cache() 使用 templateString,或者至少要把 templateString 设置成 null 以覆盖掉父类对 templateString 的设置。
  2. 在定义 isLayoutContainer 为 true 后,ContentPane 表现得更像是一个布局控件,这可能会破坏掉一些自定义子类的功能。
  3. widgetsInTemplate 的开始代码发生了变化,如果你有一个自定义部件手动添加了子部件到自己的 DOM 中,一定要把这些子部 件添加到 this._startupWidgets[] 和 this._supportingWidgets[] 中。或者你也可以把 _earlyTemplatedStartup 设置成 true 来恢复成 1.3 的行为。
JavaJavaScript语言 & 开发架构