首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Ajax 库大比拼:Dojo 与 YUI(1)

Ajax 库大比拼:Dojo 与 YUI(1)

创建一个现代的基于 Web 的应用程序比起几年前所需更多。现在,开发人员的任务是利用 Ajax 工具箱中所有技术来创建丰富的交互式 UI。这些方法最初引入时,许多专家认为只有业内行家才能掌握,尽管现在并没有变简单,但是高质量的框架已经可以帮您的大忙了。本文探讨 Dojo 和 Yahoo! UI Library (YUI) 这类流行的库如何简化当今 JavaScript 开发人员的工作,为什么应该一开始就使用库,以及如何选择库。也提供了一些 Dojo 和 YUI 的具体例子。       
为什么应该使用库?回到早期网络时代,就是 20 世纪 90 年代后期,我们这些做客户端开发的人面前困难重重。比起今天时髦的智能电话,我们的显示器分辨率很低;浏览器大战如火如荼,带给我们的是各种各样的不兼容;我们的工具箱只比那些使用穿孔卡片的人好一点点,我们艰难地进行着工作。使 JavaScript 跨浏览器正常工作是一项艰巨的任务,在早期的项目中,我们遇到了很多麻烦,管理员规定 “只能使用让应用程序运转所需的最小限度的 JavaScript 代码”。那段日子不堪回首。                               
问题已经得到了妥善的处理,但是浏览器问题到今天仍然存在(Windows® Internet Explorer® 6 ,我将目光投向你)。今天,除了改进很大的工具箱外,您还可以利用大量的库,来减轻开发跨浏览器前端代码的压力。事实上,您总是面临一个 ,选择正好合适的框架使您轻松很多 — 但是,您不得不花大量时间在 Y 操作系统上调试浏览器 X 的这种间歇性问题。现在,您应该关注使用库为您的编码工作建立基础 — 在各种浏览器和您所写的代码之间有不同的虚拟机。                                                               
除了消除浏览器之间的差别外,在您的日常编码工作中,工具包也会给您额外的帮助。有些库是极简的,仅仅只做一件事,而有些库则像包罗万象的厨房,包含所有型号(sink-sized)的工具箱,试图改正 Web 中的所有缺陷。尽管每个库都是不一样的,但仍然有一些共同点。大部分提供:               
  • 一个包装 XMLHttpRequest (XHR) 对象的事务包装器
  • 跨浏览器 CSS 选择符
  • 简化的事件处理
  • 各种各样的动画、效果和小部件
  • 各种应用函数
您怎么选择这个库,而不选另一个?唯一错误的回答是手工编写代码 — 不使用任何 库。选择库可能很困难,但是比起自己手工编写代码来说,就无足轻重了。在您为必须选择一个库而慌乱之前,要知道它们大多数都可以很好地协同工作(合理范围内)。有时候,混合和匹配是最好的选择。不管怎么样,以下建议供您选择库时参考:               
  • 您想从中得到什么?您想要寻找一个几乎可以完全替代页面上所有 UI 元素的替代品?或者您正在寻找某种方式来简化 JavaScript 编程?
  • 代码有多容易阅读?尽管过去几年中文档有了很大的改进,但是有时您也必须深入钻研代码。托付给一个库之前,有必要花点时间研究一下源代码。它容易理解吗?或者,甚至原作者也在此遇到了麻烦?
  • 文档有多好?清晰易读的代码能弥补文档的不足,但是除了教程和例子,没有什么能够帮助您开始。随便看看维基百科和网站,查看他们提供了什么。例子是清晰易读的吗?Google 的快速搜索能带给您合适的资料吗?
  • 此库相关的社区是什么样的?查看邮件列表,是否有很多邮件?新人受到尊重还是嘲笑?代码近期有更新,或者还是多年前的版本?
  • 您能得到帮助吗?尽管这涉及到社区早期内容,但浏览社区看看人们正在用什么,总是有价值的。浏览求职板块,对简历中频繁出现的库有一个大概了解。
做最终决定之前,一定要花一点时间考虑备选库。一些库有自己的风格 — 比如,Prototype 会为 JavaScrip 编程带入大量的 Ruby。如果您认为 Ruby 是所有语言的终结,那么这就是它的一个特征。但是如果阅读使您的眼睛不舒服,Prototype 可能就不是最好的选择。跟着教程阅读代码是不错,但是,在您用一个给定库实际解决自己 的问题时,很难知道哪个适合您。               
为什么选用 YUI 和 Dojo?有这么多优秀的方案供您选择,为什么选择 YUI 或 Dojo?一个词:完整性。不像其他方案需要附加的库或插件,Dojo 和 YUI 有现代前端工程师需要的一切(甚至更多)。这既有益处,也有害处,如果您是在市场上一次性购足 Ajax,那它们是两个强大的竞争者。除了大量的 JavaScript 助手和工具之外,两者都提供一流的小部件和控件 — 远远超出标准浏览器有限的调板。               
事实上,YUI 和 Dojo 是十分相似的。两者都提供一个健壮的核心实用工具和帮助函数,并且各自都有一个极好的小部件和组件的集合。除了日历、树、菜单这类旧备用组件之外,还有一个聊天选项。您可以选择一个强大的、充满生机的社区为您解答疑难、修复 bug、向其中增加新函数。他们有很多优秀的网站,其中有代码示例,参考资料,新手指南,以及 — 如果您喜欢纸质的 — 他们也提供书,书中有许多令人印象深刻的库。               
JavaScript 语言缺少名称空间或程序包,Dojo 和 YUI 克服了代码命名和包装的困难。在 YUI 中,代码位于 YAHOO 之下,附加一些 “包” 名。例如 YUI 的事件实用工具看起来像这样:                
1
YAHOO.util.Event.addListener




YUI 3YUI 3 是一个比较新的、彻底重写的 YAHOO! 库。此更新为性能而设计,很有潜力。然而目前,小部件库还稍有欠缺,但是几个月内就可以得到改变。如果您今天 就开始,可能需要着重了解 YUI 2,但一定要关注未来的 YUI 3。

Dojo 遵循类似的方法,但它的实现简单一些。尽管小部件位于 dijit 之下,但您可以使用 Dojo 作为顶层包装器访问核心组件。               
这两个库相似,但彼此并不完全相同。Dojo 允许您以声明编程 的方式使用它的小部件。换句话说,您可以使用您自己的标记为小部件配置特定属性,或者可以使用标准 JavaScript 代码 — 可任意混合和匹配。Dojo 附带一个相当有用的依赖项管理器;当您需要一个特定模块时,Dojo 确保您具有所需要的一切。它也确保依赖项已经加载一次,且仅加载一次。
返回列表