Dojo 1.3 和 PlugD 发布:采访 Dylan Schiemann

  • Dio Synodinos
  • 张凯峰

2009 年 4 月 20 日

话题:Java.NETRubyJavaScript语言 & 开发架构

最近,Dojo 1.3 正式发布,同时发布的还有PlugD 项目,这个项目会将jQuery的优雅用法添加到 Dojo 工具包中。就最新发布的新版本、工具包的发展和 TIBCO 的 General Interface 选择加入 Dojo 基金会等问题,InfoQ 采访了 SitePen 的 CEO、Dojo 的共创者 Dylan Schiemann。 

InfoQ:Dylan,对你来说这次发布的亮点在哪?

最明显的特性就是开始正式支持 IE8 和 Chrome 了。微软在 IE8 做出了很多主要会影响到 Dijit 的变化,而 Chrome 并不和 Safari 完全一样。除此之外,显著的改善还有文档 ( http://docs.dojocampus.org/ ) 质量的提升,数以百计的稳定性和性能上的提高,以及可以提高开发者效率的 API 改进。我还对新的 DataChart 部件感到非常兴奋,它把创建依赖于 Dojo 数据存储的本地图表变得非常容易,包括实时的 Comet 来源。

虽然 Alex 宣布 TaskSpeed 有一点早了,但至少我很高兴,因为经过了这几次新版本发布后,Dojo 不再是一个速度慢而臃肿的工具包了,就像 0.4 版本之前那样。但在我心目中,对它是不是最快的仍然存有疑问,因为 TaskSpeed 和 SlickSpeed 也并不是完美的。

InfoQ:随着这次版本发布的还有PlugD 插件,这个插件将我们熟悉的 jQuery 的用法添加到 Dojo 的功能中。你认为 Dojo 核心在将来也会朝着那个方向去发展吗?

绝对是这样,因为 jQuery 用来访问和操纵 DOM 的 API 已经被证明是相当受欢迎的。这项工作由 Dojo 项目的领导者 Peter Higgins 来主导的,最后因为一些缘故成为了一个单独的项目或者说插件。原因之一是为了演示将优秀的功能以插件的形式添加进 Dojo 是多么容易的事情。另外一个原因就是我们许诺我们的用户,Dojo 核心和 Dijit 的特性要足够稳定,并且跟过去的.x 版本不会不兼容。因此我们希望在把这个功能引入到 Dojo 核心之前先准备好。我期望是在 Dojo1.4 中看到更具体的内容。

InfoQ:Dojo 1.3 现在拥有了一个新的选择器引擎 Acme,但是它也可以透明地使用Sizzle引擎。你认为 JavaScript 框架间的组件分享会在将来成为很平常的事情吗?

Acme 是在 Sizzle 宣布前就由 Alex 开始做了。在将来,我期望在某种程度上,Sizzle 和 Acme 能最终成为一体以及相同的东西,除非它们在哲学上是互不兼容,或者我们的用户很担心这样的事情发生。jQuery 的联合缔造者 John Resig 已经在向 Dojo 基金会贡献 Sizzle 了,以鼓励跨工具包协作和对 Sizzle 的使用,而且我相信我们会看到越来越多的跨工具包合作。在我的脑子里,DOM 操作是另外一个候选,还有对于通用名称和 CSS 类名惯用词取得统一意见,这样就能在使用多个工具包时,在混合使用小部件的过程中,能很容易实现统一的主题。

InfoQ:Dojo 自 0.4 版本开始获得越来越多的关注。从那时起,它就在多个方向上取得进展,那在接下来的几年你觉得 Dojo 会怎样发展呢?

我想我们的 0.2 版本才是真正的引爆点,并获得来自 IBM、AOL、Sun 及其他公司的关注。Dojo 0.4 在 2006 年的 OSCON 大会上的确取得了显著的影响,但我们不得不完成一次重要的重写任务,以避免 Dojo 失去吸引力。之后的每一个版本发布都取得了比前一个更多的下载量,我们为人们使用 Dojo 的各种各样的方式所感动。最近的一个很有名的例子就是 Mozilla 的 Bespin。

现在,人们通常会选择 Dojo、jQuery、Ext、MooTools 和 YUI 来构建基于 Ajax 的应用,特别是在构建一些大型或者高度复杂的应用领域,会选择 Dojo。而在更多的传统 web 网站领域,Dojo 的采用率距离 jQuery 和 Prototype 还比较远,而且可能相对 YUI 和 MooTools 也处于下风。

虽然你的只拥有一点 Ajax 功能的标准 web 网站应用并不是我们的目标客户,但最新的性能比较表明,Dojo 同样可以提供强大的、功能丰富的选择。除了逐渐和传统 web 站点发生关联之外,我们也致力于将 Dojo 发展成可用于移动 web 应用、站点和部件。

最后,关于 Dojo 的特性,我们会继续听取我们的用户的意见,并致力于对他们来说最重要的功能。Dojo Grid 在过去这一年获得了极大的关注和使用,而且会继续吸引人们的注意力来做到更好更加模块化,因为,如果你想把所有用户的功能需求都添加进来的话,表格会变的非常复杂。

InfoQ:在过去的几年,有一些项目逐渐加入到 Dojo 基金会中,比如 Cometd、Persevere、DWR,以及最近的 TIBCO 的 General Interface。你能给我们解释一下这个基金会主要是干什么的,以及它如何让这些项目和社区受益呢?

最一开始,这个基金是由我和 Alex 共同作为 Dojo 工具包的版权所有者而发起的,所以这不是 Alex 和 Dylan 版权所有。我们曾经考虑过把它放在像 Apache 这样的地方来允许申请资格,但我们还是想尽可能地减少流程,把重心放在创造伟大的代码上面,而不是像金钱或者传统的基金会功能上。

虽然 Dojo 基金会总是可以使用捐赠来支持更好的服务器端操作和减少年度经费,但强调代码贡献、每个项目预算上的自主以及每个项目领导者拥有对项目高度的分布式控制,是更能激发起兴趣的事情。我们对项目设定了很少的限制:拥有 100 点的开源项目(请参考 Dojo 基金会网站),并在某个许可证(目前是 BSD、AFL 和 Apache)允许下提供你的代码。一旦某个项目被吸收进 Dojo 基金会,我们就会提供服务器端操作帮助和其他的好处。如果你有一个想要贡献给 Dojo 基金会的项目,请跟我联系获得更多细节信息。

Java.NETRubyJavaScript语言 & 开发架构