Ext JS 教程

2025年3月17日 | 阅读18分钟
Ext JS Tutorial

什么是 Ext JS

Ext JS 是一个基于 JavaScript 的强大应用程序开发平台。它通过使用 JavaScript 帮助您创建数据密集型 HTML 5 应用程序。Ext JS 框架允许我们借助 JavaScript 创建具有用户体验的企业应用程序,而无需编写 CSSHTML 5 代码。它提供了一组丰富的 UI(用户界面),用于创建具有跨浏览器功能的 Web 应用程序。

Ext JS 广泛用于创建桌面应用程序。它兼容所有现代浏览器,例如 FirefoxChrome、Safari 6+ 和 Opera 12+。 Ext JS 包含内置主题和 UI 组件,可减少开发时间并提高生产力。

Ext JSSencha Touch JavaScript 库 的产品。它提供以下产品

  • Sencha Touch: 这是一个高性能的 HTML5 框架,用于开发移动应用程序。
  • Sencha GXT: 它是借助 Java 开发富 Web 应用程序最稳健的方法。
  • Ext JS: 这是一个用于使用 HTML5 和 JavaScript 开发 Web 应用程序的框架。

Ext JS 的功能

  1. Ext JS 是一个用于创建企业应用程序的客户端 JavaScript 框架。
  2. 您可以借助 Ext JS 开发单页应用程序。
  3. Ext JS 支持 JavaScript 的面向对象编程概念(OOP)。它使应用程序的开发和维护更容易。
  4. Ext JS 基于 MVC (Model View Controller)MVVM (Model View ViewModel)。
  5. Ext JS 支持 OOB(开箱即用) 组件、布局和容器。
  6. 它还具有数据包概念,可以轻松访问或保存数据。
  7. Ext JS 支持包的本地化,这有助于您本地化应用程序。
  8. Ext JS 为组件和 UI 容器提供拖放功能。
  9. 它还包括 OOB(开箱即用) 主题,例如 Triton、Neptune、Grey、Crisp 和 Classic。
  10. Ext JS 借助 Compass 和 SASS(Syntactically Awesome Style Sheet) 包含自定义主题。
  11. Ext JS 具有新版本与旧版本的代码兼容性功能。
  12. Ext JS 包含一个灵活的布局管理器,允许我们在多个浏览器、屏幕尺寸和设备上组织数据和内容的显示。

Ext JS 版本

序号版本描述
1.Ext JS 4.x它用于开发桌面应用程序。在此版本中,Sencha Touch 框架用于创建平板电脑和移动应用程序。
2.Ext JS 5.x它用于创建平板电脑和移动应用程序。
3.Ext JS 6.x-当前此版本用于开发适用于所有类型设备(如手机、平板电脑和桌面)的应用程序。在此版本中,开发人员需要编写更少的代码。它包括两种工具包:Modern 和 Classic。

Ext JS 的历史

Ext JS 的历史如下表所示

序号版本发布年份描述
1.Ext JS 1.12006这是 Jack Slocum 于 2006 年 创建的第一个 Ext JS 版本。Ext JS 1.1 是实用程序类的集合。它具有名为 YUI-ExtYUI(Yahoo 用户界面) 扩展。
2.Ext JS 2.02007这是 Ext JS 于 2007 年 推出的第二个版本。此版本具有用于桌面应用程序的 API 文档,但功能有限。此版本与之前的版本不向后兼容。
3.Ext JS 3.02009这是 Ext JS 于 2009 年 发布 的第三个版本。Ext JS 3.0 关联了一些新功能,例如 列表和图表视图。此版本与之前的版本向后兼容。
4.Ext JS 4.02011在推出 Ext JS 3.0 之后,开发人员面临着提高速度的重大挑战。

Ext JS 4.0Ext JS 于 2011 年 推出的第四个版本。它是完全升级的版本,由 MVC(Model View Controller) 和一个快速应用程序阅读。

5.Ext JS 5.02014这是 Ext JS 于 2014 年 发布 的第五个版本。此版本的主要修改是将 MVC(现代视图控制器) 架构替换为 MVVM(模型视图视图模型) 架构。此版本提供了一些新功能,例如为触摸设备开发桌面应用程序、响应式布局和双向数据绑定。
6.Ext JS 6.02014 年至今这是 Ext JS 的当前版本。在此版本中,开发人员将 Ext JS(桌面应用程序)框架与 Sencha Touch(移动应用程序)框架结合起来。

Ext JS 工具

下面列出了一些由 Sencha 提供的工具。这些工具用于 Ext JS 中的应用程序开发。

Sencha IDE 插件

Sencha IDE 插件 将 Sencha 框架集成到 WebStorm IDEs、IntelliJ 中,这有助于开发人员提高生产力。它提供诸如 代码检查、代码完成、代码生成、代码集成、拼写检查、模板创建、代码重构等 功能。

Sencha Cmd

这是一个工具,为开发人员提供一些功能,例如 代码压缩、脚手架生产构建生成。

Sencha Inspector

它是一个调试工具,帮助我们在开发时调试代码。

Ext JS 与 Angular JS

Ext JSAngular JS
它是一个框架,用于借助 JavaScript 创建基于 Web 的企业应用程序。它是一个框架,用于扩展 HTML 语法。
Ext JS 支持 MVC(模型-视图-控制器)和 MVVM(模型-视图-视图模型)架构。它只支持 MVC 架构。
它支持响应式 UI(用户界面)。它不支持响应式 UI。如果您想使用响应式 UI 设计,则需要使用 Bootstrap 或任何其他框架。
它是由 Sencha 维护的每服务器商业许可的开源框架。它也是由 Google 和其他人维护的开源框架。
它为 Ext JS 提供 ALM(应用程序生命周期管理) 工具。它不提供任何 ALM 工具。如果您想使用它,那么您将选择第三方 ALM 工具。
在 Ext JS 中,无需编写 HTML 5 或 CSS 3 代码。在 Angular JS 中,您需要编写 HTML 5CSS 3 代码
它支持 OOB(开箱即用) 组件,如数据视图、树视图、表单和网格。Angular JS 不支持任何 OOB UI 组件。
它支持 OOB 主题,例如 Classic、Neptune、grey、CrispTriton 等。它不支持任何 OOB 主题。

如何设置 Ext JS 环境

要使用 Ext JS,您需要设置开发环境。Ext JS 应用程序开发需要三个基本要素,例如 Sencha SDK、IDE(集成开发环境)和 Web 服务器。在本节中,我们将指导您如何下载和设置机器上的 Ext JS 环境。

库文件下载

在这里,我们将下载 Ext JS 库文件的试用版。您需要按照以下步骤下载 Ext JS 的库文件。

第 1 步: 您将使用您注册的邮箱 ID 下载 Ext JS 的试用版。您也可以使用以下链接 https://www.sencha.com/products/download,您将获得以下代码片段

Ext JS Tutorial

第 2 步: 现在,您将点击上面截图中所示的 免费试用 按钮。点击按钮后,您将获得以下屏幕

Ext JS Tutorial

第 3 步: 填写所需详细信息后,您需要点击 立即下载,您的库文件将开始下载,如下所示

Ext JS Tutorial

第 4 步: 下载的文件夹是一个 zip 文件夹。您需要解压该文件夹,您将获得各种 CSS 和 JavaScript 文件。

第 5 步: 解压缩文件夹后,您需要点击 .exe 文件,安装过程将开始,如下面的代码片段所示

Ext JS Tutorial

第 6 步: 您需要点击 下一步 按钮,您将获得以下截图

Ext JS Tutorial

第 7 步: 现在,选择“我接受协议 ”,然后点击 下一步 按钮,您将获得以下代码片段

Ext JS Tutorial

第 8 步: 现在,您需要选择安装 Ext JS 库文件的路径。默认情况下,它将安装在 C 盘。您也可以通过点击 浏览 按钮更改位置,然后点击 下一步 按钮。

Ext JS Tutorial

第 9 步: 如上面截图所示,您需要选择要安装的组件。选择组件后,点击 下一步 按钮,您将获得以下屏幕

Ext JS Tutorial

第 10 步: 安装完成后,点击 完成 以完成该过程。

库文件包含以下 JavaScript 和 CSS 文件。这些文件如下所示

JavaScript 文件

在解压缩的文件夹中,您将获得以下文件,您需要将其包含在应用程序中。

序号。文件描述
1.ext-all.js此文件包含无注释的截断代码。
2.ext.js这是一个包含所有函数以执行应用程序的基础文件。
3.ext-all-dev.js这也是一个用于开发的截断文件。它包含控制台日志和注释,有助于我们检测错误。
4.ext-all-debug.js此文件用于调试目的。
5.ext-all.jsext-all.js 文件用于开发目的。它是一个小文件。

CSS 文件

在解压后的文件夹中,您将获得以下基于主题的文件,您需要将其包含在应用程序中。您可以在 **\ext7.2.0.84-windows\ext-7.2.0.84\build\classic\theme-classic\resources\theme-classic-all.css** 文件夹下找到这些文件。

  • 如果您想使用移动应用程序,则需要使用现代主题,您可以在 \ext-7.2.0.84 \ext-7.2.0.84\build\modern 文件夹下找到它。
  • 如果您想使用桌面应用程序,则需要使用经典主题,您可以在 \ext-7.2.0.84 \ext-7.2.0.84\build\classic 文件夹下找到它。

您可以在 Ext JS 应用程序中添加以下 CSS 文件。您还可以将 Ext Js 应用程序的代码放入名为 app.js 的文件中。

CDN(内容分发网络)设置

内容分发网络可以定义为 由地理分布的服务器集合组成,用于通过互联网快速分发内容。CDN 提供了传输加载内容所需的基本资产的便利,例如 JavaScript 文件、HTML 文件、图像、样式表等。

您还可以在程序中提供 内容分发网络 的直接链接,以便在不下载 Ext JS 库文件的情况下使用 Ext JS,如下面给出的代码所示

文本编辑器设置

文本编辑器用于编写和执行各种语言的源代码,例如 HTML、JavaScript、CSS Python、Ruby、PHP 等。 Ext JS 是一个 JavaScript 框架,您也可以在其中使用 HTML 文件。因此,您可以根据自己的选择和要求使用各种文本编辑器。下面列出了一些文本编辑器

Visual Studio Code

它是由 Microsoft 推出的一款源代码编辑器,适用于 Windows、Mac 和 Linux 操作系统。您可以通过点击以下链接轻松下载

https://vscode.js.cn/

Eclipse

Eclipse 是一个用于开发应用程序的开源集成开发环境。它包括可扩展的插件和一个基本工作区系统,这有助于我们自定义开发环境。您可以通过点击下面给出的链接下载它

https://www.eclipse.org/

记事本

它是一个用于 Microsoft Windows 的基本文本编辑程序。它帮助用户创建文档。您还可以使用类似的文本编辑器,如 Sublime、Notepad++。

Ext Js 浏览器设置

它可以指代 一个用于访问 WWW(万维网)上信息的软件应用程序。 浏览器用于根据用户的要求在屏幕上显示必要的内容。

Ext JS 提供跨浏览器兼容性。它可以在不同的浏览器之间执行功能。

您可以在所有主流浏览器上执行 Ext JS 的程序代码。下面我们列出了一些支持 Ext JS 应用程序的浏览器

  • Google Chrome 10 及以上版本
  • Microsoft Edge 12
  • IE (Internet Explorer) 6 及以上版本
  • Firefox 3.6 及以上版本
  • Safari 4 及以上版本
  • Opera 11 及以上版本

Ext JS 的架构

Ext JS 支持 版本 4 的 MVC(模型-视图-控制器)版本 5 的 MVVM(模型-视图-视图模型) 架构。此架构对于程序代码是可选的,但它有助于使我们的代码易于建立和维护。

Ext JS Tutorial

Ext JS 应用程序的项目结构

Ext JS 应用程序文件夹包含 JavaScript 文件夹。Ext Js 应用程序包含 模型、存储、实用程序、视图、控制器文件 以及 app.js 文件。在这里,我们将详细讨论每个文件。

Model.js

它包含将后端数据对象映射到视图的 dataIndex。它还包含执行存储数据绑定到视图的对象。在 model.js 中,您还可以借助存储获取数据。

App.js

它是负责启动程序流程的主文件。它还应包含带有 <script> 标签的 HTML 文件。App.js 调用应用程序控制器以执行其余功能。

View.js

View.js 负责应用程序的界面,该界面显示给用户。它还包含丰富的 UI(用户界面) 视图。这些视图可以由用户根据自己的需求进行自定义和扩展。

Controller.js

此文件控制 Ext JS MVC 架构。它还包含应用程序的整体控制,包括事件监听器和代码。controller.js 包含确定所有其他应用程序文件(如 require、model、mixins、view 和 store)的路径。

Store.js

它存储缓存数据,这些数据将通过模型对象提供给视图。Store.js 文件借助代理获取数据。代理包含用于获取后端数据服务的路径。

Utils.js

它有助于使我们的代码清晰、整洁、易于理解和可读。MVC(模型-视图-控制器) 不支持 utils.js。您可以在 Utils.js 文件中创建方法,并在控制器或视图中调用它们。它还允许代码重用。

MVVM(Model View ViewModel)架构中, 您将使用 ViewModel 而不是控制器。

ViewModel

ViewModel 就像模型和视图变化之间的调解器。ViewModel 将模型包装到视图中。ViewModel 与视图没有直接交互。

Ext JS 的组件

组件可以定义为 许多小部件,它们有助于创建应用程序。 Ext JS 也由许多被称为 组件 的小部件组成。组件指的是包含复杂功能的 DOM 元素。所有组件都继承自 Ext. Component 类。

Ext JS Tutorial

Ext JS 应用程序包含各种类型的元素,例如 Combobox、grid、panel、container、textfield、numberfield 等。

Ext JS UI(用户界面)组件是从 Ext. Components 类中提取的。Ext.Component 类也从 Ext.Base 类中提取。

下面表格中列出了 Ext JS 的一些组件。

序号。组件描述
1.形式表单帮助我们从用户那里获取数据。
2.网格它用于以表格形式显示数据。
3.图表它用于以图形方式显示数据。
4.消息框此组件用于以警报框形式显示数据。
5.WindowWindow 组件帮助我们创建窗口。当事件发生时,它总是弹出。
6.工具提示它用于在事件发生期间显示数据。
7.HTML 编辑器编辑器用于样式化用户输入的数据。它应该是颜色、大小和字体。
8.Progress Bar (进度条)此栏始终显示后端功能的进度。

Ext JS 中的类系统

类可以定义为一种可扩展的程序代码模板,它有助于创建对象,为成员变量提供初始值,并实现方法和成员函数的行为.

在 Ext JS 中,Ext 用作命名空间,用于封装 Ext JS 中的类。Ext JS 框架包含自己的类系统。Ext 允许我们使用 300 多个类,可用于多种功能。一个 Ext 类包含大约 59 个属性和 78 个方法。一些基本方法是 Ext.apply、Ext.create、Ext.define、Ext.getCmp、Ext.override 和 Ext.application 等。

在 Ext JS 中定义一个类

如果您想在 Ext JS 中定义一个类,则必须使用 Ext.define()

语法

在这里,我们讨论了语法的所有值。

类名: 它是用户根据应用程序结构给定的类名。

类成员/属性: 类成员/属性用于确定类行为。

回调函数: 这是一个在类加载时调用的函数。它是一个可选函数。

示例

创建对象

在 Ext JS 中创建对象很容易,就像在其他面向对象编程语言(OOP)中一样。您可以通过以下两种方式在 Ext JS 中创建对象

使用 Ext.create() 创建对象

使用 new 关键字创建对象

Ext JS 继承

在面向对象编程中,术语继承可以定义为 子类导入超类属性的技术。

在 Ext JS 中,您可以通过以下两种方式使用继承

借助 Ext.extend 方法进行继承

借助 Mixins 进行继承

mixins 关键字帮助我们将类 A 的属性导入类 B。通常,mixins 包含在控制器中,控制器包含各种类的声明,例如 store、view 等。

您还可以调用 DepartmentUtils 类并在应用程序中使用它。

Ext JS 程序的示例

在这里,我们将讨论 Ext JS 的程序代码。在下面编写的程序代码中,首先,我们需要创建一个名为 Sample.html 的简单 HTML 文件,并在 <head> 标签 中提供库文件。

Sample.html

程序说明

在上面的程序代码中,我们有以下内容

Ext.onReady() 方法: 当 Ext Js 元素准备好渲染时,会调用此方法。

Ext.create() 方法: 它用于构建对象。在上面的代码中,我们创建了 Ext.Panel 对象。

Ext.Panel: 它是 Ext JS 中使用的内置类。它还包含以下用于不同功能的不同属性。

Render To: 它负责交付面板。在上面的代码中,div id 是 'helloWorldPanel'

Title: 此属性为面板提供 标题

Height & Weight: 这些属性用于设置面板的大小。

Html: 此属性帮助我们在面板中显示 Html 内容。

输出

为了成功执行上述程序代码,您可以在任何标准浏览器中打开 Sample.html 文件,您将获得以下输出

Ext JS Tutorial

Ext JS 中的方法

下面列出了一些在 Ext JS 中最常用的方法。这些方法是预定义的方法,用于执行不同的功能。各种方法存储在不同的类中。

Ext.String 类

此类包含各种方法,可帮助我们处理字符串数据。 下面以表格形式列出了常用方法

序号。方法描述
1.Ext.String.htmlEncode它通过编码使 html 值可解析。
例如-Ext.String.htmlEncode("< p > Hello Ext JS < /p >");输出 - "&lt; p &gt; Hello Ext JS &lt; /p &gt;"。
2.Ext.String.htmlDecode它解码编码的 html 值。
例如:
Ext.String.htmlDecode("&lt; p &gt; Hello Ext JS &lt; /p &gt;");
输出- "< p > Hello Ext JS < /p >"
3.Ext.String.trim此方法用于删除字符串中不需要的空格。
例如:
Ext.String.trim('   Ext JS   ');
输出- "Ext JS"
4.Ext.String.urlAppend此方法用于附加 URL 字符串的值。
例如:
Ext.String.urlAppend('https://www.google.com' , 'hello Ext JS');
输出- "https://www.google.com?hello Ext JS"
Ext.String.urlAppend('https://www.google.com?index=1' , 'hello Ext JS');
输出- "https://www.google.com?index=1&hello Ext JS"
5.Ext.String.toggle此方法用于在两个不同值之间切换值。
例如:
var toggleString = 'ASCENDING'
toggleString = Ext.String.toggle(p, 'ASCENDING', 'DESCENDING');
输出 - DESCENDING,因为 toggleString 的值为 ASCENDING。现在再次,如果您打印相同的内容,您将得到 toggleString = "ASCENDING",因为它的值为 'DESCENDING'。
它与三元运算符相同
toggleString = ((toggleString =='ASCENDING')? 'DESCENDING' : 'ASCENDING' );

Ext.is 类

此类用于 确定您正在使用的平台和操作系统。 它应该是移动设备或桌面设备,以及 Windows 或 Mac OS。Ext.is 类包含以下方法

序号方法描述
1.Ext.is.Android如果使用 Android 操作系统,则返回 true;否则返回 false。
2.Ext.is.Platforms此方法用于返回当前版本所使用的平台。
例如:
[Object { property = "platform", regex = RegExp, identity = "iPhone"}, 
Object { property = "platform", regex = RegExp, identity = "iPod"}, 
Object { property = "userAgent", regex = RegExp, identity = "iPad"}, 
Object { property = "userAgent", regex = RegExp, identity = "Blackberry"}, 
Object { property = "userAgent", regex = RegExp, identity = "Android"}, 
Object { property = "platform", regex = RegExp, identity = "Mac"}, 
Object { property = "platform", regex = RegExp, identity = "Windows"}, 
Object { property = "platform", regex = RegExp, identity = "Linux"}
3.Ext.is.Desktop如果您正在使用桌面,则返回 true,否则返回 false。
4.Ext.is.iPhone如果您正在使用手机,此方法返回 true;否则返回 false。
5.Ext.is.Phone如果您正在使用 iPhone,此方法返回 true;否则返回 false。
6.Ext.is.iPod当您使用 iPod 时,它返回 true,否则返回 false。
7.Ext.is.iPad如果您使用 iPad,则返回 true,否则返回 false。
8.Ext.is.Linux如果您正在使用 Linux 操作系统,则返回 true,否则返回 false。
9.Ext.is.Mac如果您正在使用 Mac 操作系统,则返回 true,否则返回 false。
10.Ext.is.Blackberry如果您正在使用 Blackberry 操作系统,则返回 true,否则返回 false。
11.Ext.is.Windows如果您正在使用 Windows 操作系统,则返回 true,否则返回 false。

Ext.supports 类

Ext.supports 类用于提供功能是否适用于设备/浏览器的信息。Ext.supports 类包含以下方法

序号。方法描述
1.Ext.support.SvgSvg 代表 可缩放矢量图形。此方法检查设备是否支持 Svg 功能。
它检查以下内容-
doc.createElementNS && !!doc.createElementNS( "http:/" + "/www.w3.org/2000/svg", "svg").createSVGRect.
2.Ext.supports.History如果设备支持 HTML 5 的历史记录,此方法返回 true;否则返回 false。
3.Ext.supports.GeoLocation此方法用于支持地理定位功能。它还检查 navigator.geolocation 方法。
4.Ext.supports.RangeExt.supports. Range 方法检查浏览器是否支持 document.createRange 方法。
5.Ext.supports.Canvas此方法用于监控设备是否适合 Canvas 绘图方法。
例如:
doc.createElement('canvas').getContext

杂项方法

在这里,我们还有一些在 Ext JS 中使用的方法。这些方法如下表所示

序号。方法描述
1.Ext.getVersion()此方法返回 Ext Js 的当前版本。
例如:
当您调用 Ext.getVersion() 时,它会返回一个数组值,例如版本、短版本等。
Ext.getVersion().- 返回 Ext JS 的当前版本,例如 "7.2.0"。
2.Ext.userAgent()此方法提供有关 userAgent 浏览器的信息。userAgent 帮助我们描述服务器的 Od 和浏览器。
3.版本相关函数此方法帮助我们提供当前浏览器版本。它包含一些函数,例如 Ext.firefoxVersion、Ext.ieVersion 等。
例如:
如果您使用 Firefox 并调用 Internet Explorer 的方法,则返回 0;当您使用相同的浏览器(IE)时,则返回浏览器版本。
4.Ext.typeOf()它用于显示变量的数据类型。
例如:
Var p = 10;
Var q = 'hello';
Ext.typeOf(p);
输出- Number
Ext.typeOf(q);
输出- String
5.浏览器相关函数这些函数用于根据当前网页浏览器返回布尔值。方法包括 Ext.isIE6、Ext.isChrome、Ext.isIE、Ext.isFF06 等。
6.数据类型相关方法它根据变量返回布尔值。
例如:
Var x = ['x', 'yz'];
Var y = 'Hello';
Var z = '456';
Var nullvariable;
Var deifnedvariable;
Function extraFunction() {return true;}
Ext.isArray(a);//返回 true
Ext.isString(b);//返回 true
Ext.isNumber(c);//返回 true
Ext.isEmpty(emptyVariable);//返回 true
Ext.isEmpty(b);//返回 false
Ext.isDefined(definedVariable);//返回 true
Ext.isfunction(extraFunction);//返回 true

Ext JS 的优点

Ext JS 有以下一些优点

  • 它遵循 MVC(模型-视图-控制器)架构,这有助于使代码更具可读性。
  • 它提供了一系列小部件,有助于我们创建强大的 UI(用户界面)。
  • 它有助于我们降低开发成本。
  • 它简化了跨平台开发。
  • 它通过将开发与 IDE 插件集成来提高开发效率。

Ext JS 的局限性

  • 库文件会减慢应用程序并增加加载时间,因为它有 500 KB 的巨大大小。
  • Ext Js 需要经验丰富的开发人员来开发应用程序。
  • HTML 语言的使用使此应用程序变得复杂且难以调试。
  • Ext JS 对开源应用程序免费,但对商业用途收费。
  • 有时简单的东西需要代码,但在 JQuery 或纯 HTML 中更容易。