Ext JS 是一种强大的 JavaScript™ 库,它通过使用可重用的对象和部件简化了 Asynchronous JavaScript + XML(Ajax)开发。本文介绍 Ext JS,概述它背后的面向对象 JavaScript 设计概念,解释如何使用 Ext JS 框架开发富因特网应用程序的用户界面元素。<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --> <!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
当今有许许多多 的 Web 开发框架,开发人员很难判断哪些框架值得花时间去学习。Ext JS 是一种 JavaScript 开发框架,这种强大的 JavaScript 库通过使用可重用的对象和部件简化了 Ajax 开发,Web 应用程序开发人员应该认真考虑使用这个工具。Ext JS 最初是 Jack Slocum 编写的一组 Yahoo! User Interface(YUI)Library 扩展。但是,随着 2.0 版的发布,它已经成为市场上最简单最强大的 JavaScript 库。
|
Ext JS 项目最初的目的是扩展 YUI Library 提供的功能。YUI Library 的一个关键方面是跨浏览器支持,这也可以在 Ext JS 中找到。这种支持使开发人员在构建 Web 应用程序时不需要考虑目标浏览器。
Ext JS 提供出色的性能。这个框架是完全面向对象且可扩展的。因为 Ext JS 是用 JavaScript 编写的,所以只需下载并安装,就可以使用 Ext JS 的特性。
在采用一个新框架之前,一定要了解框架基于哪种许可协议条款。Ext JS 提供几个许可协议选项:
- 开放源码许可证: 这采用 Open Source LGPL 3.0 许可证的条款。如果打算在另一个开放源码项目或者个人、教育或非盈利项目中使用 Ext JS,这是最合适的许可证。
- 商用许可证: 如果希望在项目中使用 Ext JS 时避免开发源码许可证的某些限制,或者由于内部原因必须拥有许可证,或者希望在商业上支持 Ext JS 的开发,这是最合适的许可证。 参考资料 中提供了 Ext JS 站点的链接,这个站点提供关于商用许可证的详细信息。
- 原始设备生产商(OEM)/转售商许可证: 如果您打算对 Ext JS 进行重新打包,或者作为软件开发库销售 Ext JS,这种许可证是最合适的。
所有主流的 Web 浏览器都支持 Ext JS 框架,包括:
- Windows® Internet Explorer® 6 及更高版本。
- Mozilla Firefox 1.5 及更高版本(PC 和 Macintosh)。
- Apple Safari 2 及更高版本。
- Opera 9 及更高版本(PC 和 Mac)。
开发人员应该会喜欢 Ext JS 经过深思熟虑的设计和实现。它的面向对象设计模式反映了对象之间的关系和交互。据设计者说,开发 Ext JS 时使用的设计模式在很大程度上受到 Head First Design Patterns 这本书(Eric Freeman 等著,参见 参考资料 )的影响。查看 Ext JS 源代码,就会发现创建模式(包括 singleton 设计模式)、结构模式(包括 flyweight 设计模式)和行为模式(包括 observer 模式)。
|
|
Ext JS 提供大量用户界面元素,这是开发富因特网应用程序(RIA)所必需的。Ext JS 包含消息框、组合框、数据网格和工具栏等控件。另外,还可以通过布局管理器指定元素在页面上的显示方式。还有用于操作表单和窗口的其他特性。
如果使用其他框架,JavaScript 文件的包含次序是可以修改的。但是,Ext JS 通常按照 清单 1 那样包含在 Web 应用程序中(假设 Ext JS 安装在 Web 服务器上的 lib/ext 目录中):
清单 1. 包含 Ext JS 框架
|
ext-all.js 包含整个 Ext JS 框架。可以按照上面的排列引用文件,也可以只包含应用程序中使用的元素所需的文件。
|
如果结合使用 Ext JS 框架和其他 JavaScript 库,请参考安装根目录中的 INCLUDE_ORDER.txt 文件,它说明了在应用程序中包含库的次序。
Ext JS 框架的主体是大量用户界面元素。这些元素包括表单、对话框、选项卡、树和网格。
Ext JS 提供一组用来创建交互式表单的工具。 图 1 给出一个表单示例。 清单 2 给出相关的实现。
图 1. Ext JS 表单示例
清单 2. Ext JS 表单示例的源代码
|
如 图 2 所示,Ext JS 支持创建用于用户输入的模态对话框,还支持实现选项卡式用户界面,以便充分利用屏幕空间。图 2 中对话框的源代码见 清单 3 。
图 2. Ext JS 模态对话框和选项卡
清单 3. Ext JS 模态对话框的源代码
|
如 图 3 所示,Ext JS 还提供树控件,这种控件提供用户熟悉的与文件系统相似的视图。Ext JS 树控件完全支持拖放功能。图 3 所示树控件的源代码见 清单 4 。
图 3. Ext JS 树控件
清单 4. Ext JS 树控件的源代码
|
最强大的 Ext JS 用户界面元素可能是网格控件。可以通过它显示来自后端数据源的数据和其他结构化数据,比如 XML 和数组。如 图 4 所示,Ext JS 网格可以实现分页和列排序。这个示例接收来自 ExtJS.com 论坛的最新主题,强调了 Ext JS 框架的 Ajax 功能。图 4 所示网格的源代码见 清单 5 。
图 4. Ext JS 网格控件
清单 5. Ext JS 网格控件的源代码
|
Ext JS 框架支持 Ajax 实现。通常,Ajax 应用程序的一个共有特性是应用程序可以异步地响应用户输入,它会更新部分用户界面,而不需要重新显示整个 Web 页面。 清单 6 给出一个典型的 Ext JS Ajax 实现:当单击按钮时,HTML 文本框和按钮元素把文本框中的数据发送给 Web 服务器。
清单 6. Ext JS 的 Ajax 实现
|
当用户单击
OK
时,使用 Ext JS
UpdateManage
类发出 Ajax 调用,这比传统的 Ajax
HttpRequest
调用简单多了。
可以把 Ext JS 与其他常用的服务器端 Web 开发框架一起使用,包括 PHP、Java 语言、Microsoft .NET、Ruby on Rails 和 ColdFusion。关于与这些框架集成的详细信息,参见 参考资料 。
可以在几种流行的集成开发环境(IDE)中进行 Ext JS 开发,包括 Eclipse、Aptana 和 Komodo。关于 IDE 对 Ext JS 开发的支持的信息,参见 参考资料 。
Web 开发框架常常承诺简化和加快应用程序开发,但是许多框架都没有实现这个目标。Ext JS 通过一个易用的开发模型实现了它的承诺。最新的 Ext JS 版本(2.0)表明,它正在快速进步,可以成为 RIA 开发的基础。
本文只是粗略地介绍 Ext JS 框架的主要特性,Ext JS 的特性远不止这些。现在,如果要进行更深入的探索,请从 ExtJS.com Web 站点和 交互式示例 开始!
学习
-
您可以参阅本文在 developerWorks 全球网站上的
英文原文
。
-
Tutorial: Introduction to Ext
:这个教程可以帮助您开始使用 Ext JS。
-
Ext JS 文档
:阅读 2.0 版 API 的文档。
-
获得关于 Ext JS
商用许可证
的更多信息。
-
“
设计复合应用程序:设计模式
”:了解关于设计模式的更多信息(Jo Grant 和 Craig Wolpert,developerWorks,2008 年 2 月)。
-
Head First Design Patterns
:阅读 Eric Freeman 等撰写的这本书(O'Reilly,2004),它影响了 Ext JS 2.0 的设计。
-
掌握 Ajax 系列
:阅读这个全面介绍 Ajax 的 developerWorks 文章系列。
-
Server-side frameworks for Ext JS
:了解 Ext JS 与 Python、PHP 和 Microsoft .NET 等框架集成的详细信息。
-
技术书店
:浏览关于这些主题和其他技术主题的图书。
-
IBM 技术活动和网络广播
:随时关注 developerWorks 的技术活动和网络广播。
获得产品和技术
-
Ext JS version 2.0 框架
:下载这个框架。
-
IBM® 试用软件
:用 IBM 试用软件改进您的下一个开放源码开发项目,这些软件可以下载或者通过 DVD 获得。
讨论
-
Ext JS 论坛
:参与 Ext JS 社区。
-
Ext JS blog
:这些 blog 是寻找关于 Ext JS 的新闻和信息的首选位置。
- developerWorks blog :参与并加入 developerWorks 社区。
|
John Fronckowiak 是 IDC Consulting Inc. 和 Western New York Web Design, LLC 的总裁兼创办人。他还是曼达尔学院计算机信息系统的临床助理教授。他还撰写了几本关于编程、数据库设计和开发以及联网的书。 |