Dojo与YUI JavaScript框架比较

13
我想知道你们对这两个框架的看法,包括以下方面:
  • 稳定性
  • 代码质量
  • 核心开发者在新功能上的推进情况
  • 跨浏览器问题
  • 模块组件
  • 最易学和集成的
我已经知道并使用jQuery,但最近发现它缺乏大型Web应用程序“企业级准备”的组件。现在我不想就jquery展开辩论,或者为什么mootools没有在其中,我只是想知道你们具体对这两个框架的看法。
谢谢!

你可以查看Yahoo的主页设计和功能来决定是否使用YUI。 - Exception
YUI库已不再得到积极维护。更多信息请参见此处:https://yahooeng.tumblr.com/post/96098168666/important-announcement-regarding-yui - GibboK
4个回答

24

免责声明:我是Dojo的贡献者。

在这次比较中,似乎没有人提出Dojo的观点——没有Dojo的话就不算是一次比较了,对吧?让我来看看你的观点。

健壮性

Dojo被许多国际大公司用于IT项目。我个人参与了VMware、IBM、思科、路透社汤姆森等公司的项目。我可以向你展示实际的贡献者名单http://docs.dojocampus.org/developer/contributors,而不是转发给你“市场宣传资料”——向下滚动以查看贡献(和使用)Dojo的公司。

我们保留个人和公司贡献者的名单,以便我们的用户可以确信Dojo代码的知识产权来源是干净的——每个贡献者都签署了一个CLA,声明他/她/它编写了贡献的代码和/或有权在AFL/BSD双重许可下进行贡献。到目前为止,我们还没有遇到任何问题。

据我所知,YUI主要由一家公司——Yahoo!开发。自2005年开始开发,仅在两年前开始接受外部贡献,现在也需要签署CLA。请注意,本文中的HTML标签已被保留。
我不是股票市场专家,但雅虎总是有动作:一天它试图与谷歌联手,第二天就关闭了搜索业务并转向微软,甚至在2008年曾经讨论过将整个公司出售给微软的问题-谁能预测它明天会做什么。现在到了2010年,自2008年以来股价下跌了-它又要再次上市吗?另一方面,有人说如果微软决定保留YUI,那么微软将是YUI更好的母公司。然而,微软拥有自己的软件产品,不完全支持开源JavaScript项目。
与YUI不同,Dojo得到了几家公司的支持,其中IBM是最有影响力的公司之一——该公司雇用了几位杰出的贡献者。虽然Dojo得到了强大的企业支持,但它仍然是一个由社区和个人驱动的项目。如果任何公司或甚至几家公司遭遇市场波动,我们仍将继续前进。
Dojo采用双重AFL/BSD许可证分发,并且可以免费使用。所有正式发布的Dojo版本均由AOL和Google CDNs提供服务。
代码质量
我有偏见 :-) ,我认为代码质量非常好。由于Dojo是一个开源项目,您始终可以自行评判并改进它,如果您感觉有能力的话。
源代码保存在Subversion中,官方镜像维护在Github (git)Bitbucket (hg)上。为方便起见,还有一个在Launchpad (bzr)上的镜像。

核心开发人员推进新功能

Dojo拥有一个活跃繁荣的社区, 使项目不断向前发展。作为核心开发人员之一,我保证我们将继续推动这个项目的发展,让其创新能力更上一层楼。

Dojo已经在创新方面取得了卓越成绩,并且我们不会停止。

跨浏览器问题

目前Dojo 1.4支持以下浏览器

  • 不再支持Firefox 2。支持Firefox V3和V3.5。
  • 支持最新版本的Safari(Safari V4)和Chrome(Chrome V3),但不支持早期版本。
  • 支持IE6、IE7、IE8所有版本。
  • 最新版Opera(Opera V10)(仅Dojo核心)。

即将发布的Dojo 1.5已经在以下浏览器上进行了广泛测试:

  • Firefox 3.5/3.6
  • Safari 4/Safari 5 和 Chrome 5
  • IE6,IE7,IE8
  • Opera 10.53 及更高版本(仅限于 Dojo 核心)

与 YUI 的 A 级浏览器相比的区别:

  • Dojo 支持 Linux,除了 Windows 和 Mac。
  • Dojo 在所有支持的操作系统上支持 Google Chrome。
  • Dojo 在所有支持的操作系统上支持 Firefox。
  • Dojo 核心在所有支持的操作系统上支持 Opera。

个人认为,我仍然会在 Firefox 2 上测试 dojox.gfx(跨平台图形包)- 它涉及 Dojo 核心,并且它可以正常工作。而且我会在一些奇特的浏览器(如 Midori)上测试 Dojo 核心。

另一个区别是,Dojo 可以在桌面和服务器环境中使用(并且确实在使用)。显然,那些特定于浏览器的组件不会被这些环境使用。

模块组件

从一开始,Dojo就提供了类、模块和包(模块的集合)。Dijit提供小部件:带有统一接口的打包HTML + JavaScript。
所有构建块都向用户公开,因此他们可以创建自己的组件,这些组件将成为第一类公民:它们可以像其他任何模块一样加载,由构建器处理(跟踪依赖项,缩小,CSS预处理等),甚至可以由用户进行异国情调的CDN构建。您可以使用库存Dojo组件所做的任何操作都可以使用您自己的组件完成。
Dojo本身分为3个子项目,可以单独使用:
- Dojo(包括Dojo Base作为单个文件) - Dijit:小部件的集合 - DojoX:更多小部件以及涵盖从跨平台制图到加密的大约50个包。

最易学习和集成

Dojo只是JavaScript和常规的HTML/DOM(用于小部件)。它不会假装成其他东西,也不是一个有着领袖的邪教,也不是一个"框架",它不会控制你的应用程序并强制你做一些奇怪的事情,Dojo不想"改进" "不完美"的JavaScript,Dojo不想伪装浏览器成为其他东西。相反,Dojo提供实用工具,使程序员更加高效,促进RAD,解决常见问题,并支持有用的技术和方法。

每个经验丰富的程序员通常都有一个在以前项目中表现良好的小型库。他或她知道要避免什么和使用什么。当我意识到Dojo就像几位专家聚在一起,精心结合自己的个人库时,这一切"恍然大悟"。当然,它有很多不同的模块,但我可以只使用我特定项目所需的内容-我不被强迫使用所有内容,我也不为我不使用的内容付费。甚至没有抽象惩罚。

如果你了解JavaScript并熟悉HTML、CSS和DOM-你将感到非常舒适。


9

我认为你拒绝jquery的原因听起来有些可疑,而将一个框架推荐为“企业级就绪”则是我的反讽。

然而,我有很多使用YUI(2和3)的经验,我认为它可能适合您的用例。

  • 健壮性 - YUI在雅虎内部使用,这应该说明其健壮性。
  • 代码质量 - 我是该项目的贡献者,代码质量非常好。由于它是开源的,您可以自行查看
  • 前进方向 - 它由雅虎支持(但也包含社区贡献),因此从前进方面来看,它相当安全。同样,您可以跟踪开发和社区参与
  • 跨浏览器 - 它支持所有雅虎A级浏览器
  • 模块 - 有很多,而且(特别是在YUI 3中)很容易只包含您需要的部分。如果您想要大部分GUI模块,仍然需要混合一些YUI 2(这很容易做到)。YUI3中的小部件即将推出。
  • 易于学习和集成 - YUI可能是我见过的任何JS库中文档最好的。然而,YUI 3在您编写JavaScript的方式上非常有见解。它以一种好的方式给你很多回报,但是要想“插入”现有项目,YUI 2可能更容易。

2
嗯,我并不是直接否决它,只是我发现jQuery UI缺少一些我需要的功能,并且其他插件的质量也不如jQuery核心。 - The Orca
1
这是真的。在YUI小部件中,您会发现更一致的质量和文档。我只是倾向于简单,并认为小部件被过度使用了 :-). - Gabe Moothart
我不太了解Dojo或JQuery,但我发现YUI的一个巨大优势在于其核心库,这使得创建和扩展强大的小部件变得相当容易。根据我的经验,别人的小部件几乎从来不能完全满足需求。你要么就将就着使用,要么就进行自定义。YUI提供了一个不错的起点和高级工具来进行自定义。在我看来,这是非常有用的。 - Matthew Smith
你的回答第一句话既不具有建设性,也不客观。你应该将其删除。 - user636044

1
YUI 有一个出色的测试工具包,不会污染全局名称空间。此外,YUI 的测试结果可以被 JUnit 读取,这对我来说是一个加分项。我没有使用过 Dojo,所以无法详细评论它,但它与 DOM 集成的方式值得注意。

1

知道JQuery是最易于使用和广受欢迎的,Dojo有其集成在Zend Framework中的优势。此外,作为库或框架的差异很重要。 - 库是关于可重用功能,但框架是关于可重用行为 - 库是从您的代码调用/继承的内容,但框架是调用您的代码或为您的代码提供服务的内容 - 库是组件和类的集合,而框架是抽象类和组件如何相互交互。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接