Ext.js快速指南

2026-02-25 20:33:54

The size of library is large around 500 KB which makes initial loading time more and makes application slow.

HTML is full of tags makes it complex and difficult to debug.

According to general public license policy it is free for open source applications but paid for commercial applications.

Some times for loading even simple things requires few lines of coding which is simpler in plain html or Jquery.

Need quite experienced developer for developing Ext JS applications.

工具

这些是sencha提供的用于Ext JS应用程序开发的工具,主要用于生产级别。

Sencha Cmd

Sencha CMD是一个提供Ext JS代码缩小,脚手架,生产构建生成功能的工具。

Sencha IDE插件

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

Sencha检查员

Sencha Inspector是一个调试工具,帮助调试器调试任何问题,同时开发。

尝试在线选项

我们已经在线设置了ExtJS编程环境,以便您可以在线编译和执行所有可用的示例。 它给你对你正在阅读的信心,并使您能够使用不同的选项验证程序。 随意修改任何示例并在线执行。

请尝试以下示例,使用下面示例代码框右上角的 Try it 选项:

对于本教程中给出的大多数示例,您将在我们的网站代码部分的右上角找到一个Try it选项,将您带到在线编译器。 所以只是利用它,享受你的学习。

本地环境设置

本节将指导您如何在机器上下载和设置Ext JS。 请按照步骤设置环境。

正在下载库文件

从sencha https://www.sencha.com下载Ext JS库文件的试用版本 。 您将从您的注册邮件ID上的网站获取试用版,这将是一个名为ext-6.0.1-trial的压缩文件夹。

解压缩文件夹,你会发现各种JavaScript和CSS文件,你将包括在我们的应用程序。 我们将主要包括以下文件:

您可以在文件夹\\ ext-6.0.1-trial \\ ext-6.0.1 \\ build下找到的(1)Javascript文件 JS文件是:

文件和描述

ext.js 这是核心文件,其中包含运行应用程序的所有功能。

ext-all.js 此文件包含在文件中没有注释的所有缩小的代码

ext-all-debug.js 这是ext-all.js的未分级版本,用于调试目的。

ext-all-dev.js 此文件也未分级,用于开发目的,因为它包含所有注释和控制台日志,以检查任何错误/问题

ext-all.js 这个文件用于生产目的,主要是因为它比任何其他小得多。

您可以将这些文件添加到您的项目JS文件夹,或者您可以给出文件驻留在系统中的直接路径。

(2)CSS文件有多个基于主题的文件,您可以在文件夹\\ ext-6.0.1-trial \\ ext-6.0.1 \\ build \\ classic \\ theme-classic \\ resources \\ theme-classic-all.css

如果我们要使用桌面应用程序,那么我们可以使用文件夹\\ ext-6.0.1-trial \\ ext-6.0.1 \\ build \\ classic下的经典主题

如果我们要使用移动应用程序,那么我们将使用现代主题,可以在文件夹\\ ext-6.0.1-trial \\ ext-6.0.1 \\ build \\ modern下找到

这些库文件将添加到Ext JS应用程序中,如下所示:

您将在app.js文件中保留ExtJS应用程序代码。

CDN设置

CDN是内容交付网络,您不需要下载Ext JS库文件,您可以直接添加ExtJS的CDN链接到您的程序,如下所示:

热门编辑

因为它是一个用于开发Web应用程序的JavaScript框架,在我们的项目中,我们将有HTML,JS文件和编写您的Ext JS程序,您将需要一个文本编辑器。 市场上甚至有多个IDE可用。 但现在,您可以考虑以下之一:

Notepad: On Windows machine you can use any simple text editor like Notepad (Recommended for this tutorial), Notepad++, sublime.

Eclipse: is an IDE developed by the eclipse open-source community and can be downloaded from http://www.eclipse.org/ .

浏览器

Ext JS支持跨浏览器兼容性,它支持所有主要浏览器:

IE 6 and above

Firefox 3.6 and above

Chrome10 and above

Safari 4 and above

Opera 11 and above

您可以使用任何浏览器运行Ext JS应用程序。

命名约定是标识符要遵循的一组规则。

它使得代码对于其他程序员也更可读和可理解。

Ext JS中的命名约定遵循标准JavaScript约定,这不是强制性的,而是遵循的良好做法。

它应该遵循camel case语法命名类,方法,变量和属性。

如果name与两个单词组合,则第二个单词将始终以大写字母开头。 doLayout(),StudentForm,firstName等。

名称

惯例

班级名称

它应该以大写字母开头,然后是驼峰盒。 StudentClass

方法名称

它应该以小写字母开头,然后是驼峰盒。 doLayout()

变量名

它应该以小写字母开头,然后是驼峰盒。 名字

常量名称

它应该是大写只有例如。 COUNT,MAX_VALUE

属性名称

它应该以小写字母开头,然后是驼峰。 enableColumnResize = true

Ext JS遵循MVC / MVVM架构。

MVC - 模型视图控制器体系结构(版本4)

MVVM - 模型视图Viewmodel(版本5)

这种架构不是程序的强制性,但最好的做法是遵循这种结构,使您的代码高度可维护和组织。

项目结构使用Ext JS应用程序

----------src

----------resources

-------------------CSS files

-------------------Images

----------JavaScript

--------------------App Folder

-------------------------------Controller

------------------------------------Contoller.js

-------------------------------Model

------------------------------------Model.js

-------------------------------Store

------------------------------------Store.js

-------------------------------View

------------------------------------View.js

-------------------------------Utils

------------------------------------Utils.js

--------------------------------app.js

-----------HTML files

Ext JS应用程序文件夹将驻留在您的项目的JavaScript文件夹中。

应用程序将包含控制器,视图,模型,存储,实用程序文件与app.js.

app.js:程式流程开始的主要档案,应该使用< script> 标签。 应用程序调用应用程序的控制器的其余功能。

Controller.js:它是Ext JS MVC架构的控制器文件。 这包含应用程序的所有控制,事件侦听器的最大功能的代码。 它具有为该应用程序中使用的所有其他文件定义的路径,例如store,view,model,require,mixins。

View.js:它包含应用程序的界面部分,显示给用户。 Ext JS使用各种UI丰富的视图,可以根据需要在这里扩展和自定义。

Store.js:它包含本地缓存的数据,它将在模型对象的帮助下在视图上呈现。 存储使用代理获取数据,代理具有为服务定义的路径以获取后端数据。

Model.js:它包含绑定要查看的商店数据的对象。 它有后端数据对象到视图dataIndex的映射。 在store的帮助下获取数据。

Utils.js:它不包括在MVC架构中,但是最好的做法是使代码清晰,不太复杂,更加可读。 我们可以在这个文件中编写方法,并在控制器或视图渲染器中调用它们。 这对代码可重用性目的也很有帮助。

在MVVM架构中,控制器被ViewModel替代。

ViewModel:它基本上是药物视图和模型之间的变化。 它将数据从模型绑定到视图。 同时它没有与视图的任何直接交互它只有模型的知识。

怎么运行的

例如,如果我们在UI中的两三个地方使用一个模型对象,如果我们在UI的一个地方更改值,我们可以看到,甚至没有保存更改模型更改的值,因此反映在UI中的所有地方 在哪里使用模型。

它使开发人员更加轻松和简单,因为不需要额外的编码绑定数据。

本章列出了在Ext JS中首先编写Hello World程序的步骤:

步骤1

在我们选择的编辑器中创建index.htm页面。 将所需的库文件包含在html页面的head部分,如下所述:

index.htm

Explanation

Ext.onReady()方法将在Ext JS准备好渲染Ext JS元素时调用。

Ext.create()方法用于在Ext JS中创建对象,这里我们创建一个简单的面板类Ext.Panel的对象。

Ext.Panel是Ext JS中用于创建面板的预定义类。

每个Ext JS类都有不同的属性来执行一些基本的功能。

Ext.Panel类有以下各种属性:

renderTo 是此面板必须呈现的元素。 \'helloWorldPanel\'是Index.html文件中的div id。

高度和宽度属性用于提供面板的自定义尺寸。

标题属性是为面板提供标题。

Html 属性是要在面板中显示的html内容。

第2步

在标准浏览器中打开index.htm文件,您将在浏览器上获得以下输出。

Ext JS是一个JavaScript框架,它具有面向对象编程的功能。Ext是封装Ext JS中所有类的命名空间。

在Ext JS中定义类

Ext提供了300多个类,我们可以用于各种功能。

Ext.define()用于在Ext JS中定义类。

语法:

Ext.define(class name, class members/properties, callback function);

类名称是根据应用程序结构的类名称。 appName.folderName.ClassNamestudentApp.view.StudentView。

类属性/成员 - 定义类的行为。

回调函数是可选的。 当类正确加载时,会调用它。

Ext JS类定义示例

Ext.define(studentApp.view.StudentDeatilsGrid, {

extend : 'Ext.grid.GridPanel',

id : 'studentsDetailsGrid',

store : 'StudentsDetailsGridStore',

renderTo : 'studentsDetailsRenderDiv',

layout : 'fit',

columns : [{

text : 'Student Name',

dataIndex : 'studentName'

},{

text : 'ID',

dataIndex : 'studentId'

},{

text : 'Department',

dataIndex : 'department'

}]

});

创建对象

像其他基于OOPS的语言一样,我们也可以在Ext JS中创建对象。

不同的方式创建对象在Ext JS-

使用new关键字:

var studentObject = new student();

studentObject.getStudentName();

使用Ext.create():

Ext.create('Ext.Panel', {

renderTo : 'helloWorldPanel',

height : 100,

width : 100,

title : 'Hello world',

html : 'First Ext JS Hello World Program'

});

Ext JS中的继承

继承是将类A中定义的功能用于类B的原理。

在Ext JS继承可以使用两种方法 -

Ext.extend:

Ext.define(studentApp.view.StudentDetailsGrid, {

extend : 'Ext.grid.GridPanel',

...

});

这里我们的自定义类StudentDetailsGrid使用Ext JS类GridPanel的基本功能。

使用Mixins:

Mixins是在没有扩展的情况下在类B中使用类A的不同方式。

mixins : {

commons : 'DepartmentApp.utils.DepartmentUtils'

},

Mixins我们添加在控制器中,我们声明所有其他类,如存储,视图等。在这种方式,我们可以调用DepartmentUtils类,并在控制器或在这个应用程序中使用其功能。

容器

Ext JS中的容器是我们可以添加其他容器或子组件的组件。这些容器可以具有多个布局以将部件布置在容器中。我们可以从容器和其子元素添加或删除组件。Ext.container.Container是Ext JS中所有容器的基类。

S.N.

描述

1

Components inside Container

此示例显示如何在容器内定义组件

2

Container inside container

此示例显示如何使用其他组件定义容器内的容器

有各种类型的容器Ext.panel.Panel,Ext.form.Panel,Ext.tab.Panel和Ext.container.Viewport是Ext JS中经常使用的容器。 下面是显示如何使用这些容器的示例。

S.N.

集装箱类型 描述

1

Ext.panel.Panel

此示例显示一个Ext.panel.Panel容器

2

Ext.form.Panel

此示例显示一个Ext.form.Panel容器

3

Ext.tab.Panel

此示例显示一个Ext.tab.Panel容器

4

Ext.container.Viewport

此示例显示一个Ext.container.Viewport容器

布局是元素在容器中排列的方式。 这可以是水平的,垂直的或任何其他。 Ext JS在其库中定义了不同的布局,但我们也可以编写自定义布局。

S.N.

布局& 描述

1

Absolute

此布局允许使用容器中的XY坐标定位项目。

2

Accordion

此布局允许将所有项目以堆栈方式(一个在另一个之上)放在容器内。

3

Anchor

此布局为用户提供了相对于容器大小给出每个元素的大小的特权。

4

Border

在此布局中,各种面板嵌套并由边界分隔。

5

Auto

这是默认布局决定元素的布局,基于元素的数量。

6

Card(TabPanel)

此布局以制表符方式排列不同的组件。 选项卡将显示在容器的顶部。每次只有一个选项卡可见,每个选项卡被视为不同的组件。

7

Card(Wizard)

在这个布局中,每次元素来到完整的容器空间。 向导中将有一个底部工具栏用于导航。

8

Column

此布局是要在容器中显示多个列。 我们可以定义列的固定宽度或百分比宽度。 百分比宽度将基于容器的完整大小计算。

9

Fit

在此布局中,容器用单个面板填充,并且当没有与布局相关的特定要求时,则使用该布局。

10

Table

由于名称意味着此布局以HTML表格式在容器中排列组件。

11

vBox

这种布局允许元素以垂直方式分布。 这是最常用的布局之一。

12

hBox

这种布局允许元素以水平方式分布。

ExtJS UI由一个或多个名为Components.Ext的widget组成.JS具有定义的各种UI组件,可以根据您的要求进行定制。

S.N.

方法& 描述

1

Grid网格组件可用于以表格格式显示数据。

2

Form窗体小部件是从用户获取数据。

3

Message Box消息框基本上用于以警报框的形式显示数据。

4

Chart图表用于以图形格式表示数据。

5

Tool tip任何事件发生时,工具提示用于显示一些基本信息。

6

Window这个UI部件是创建一个窗口,当任何事件发生时应该弹出。

7

HTML editorHTML编辑器是非常有用的UI组件之一,用于对用户输入的字体,颜色,大小等数据进行样式设置。

8

Progress bar显示后端工作的进度。

描述

拖放功能是为使开发人员轻松工作而添加的强大功能之一。拖动操作基本上是在某些UI元素上的点击手势,同时按住鼠标按钮并移动鼠标。 在拖动操作后释放鼠标按钮时,会发生放置操作。

句法

将类拖放到可拖动目标。

var dd = Ext.create('Ext.dd.DD', el, 'imagesDDGroup', {

isTarget: false

});

添加拖放目标类到drappable目标

var mainTarget = Ext.create('Ext.dd.DDTarget', 'mainRoom', 'imagesDDGroup', {

ignoreSelf: false

});

例子

下面是一个简单的例子

这将产生以下结果 -

在Extjs的拖放的帮助下,我们可以将数据从网格移动到网格和网格到窗体。下面是在网格和窗体之间移动数据的例子。

Drag and drop - Grid to Grid.

drag and drop - Grid to Form

Ext.js提供了许多要在您的应用程序中使用的主题。 你可以添加不同的主题的经典主题,看到输出的差异,这是简单地通过替换主题CSS文件,如下所述。

海王星主题

考虑你最初的Hello World应用程序。 从应用程序中删除以下CSS:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css

添加以下CSS以使用海王星主题:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-neptune/resources/theme-neptune-all.css

要查看效果,请尝试以下程序:

这会产生以下结果:

酥脆主题

考虑你最初的Hello World应用程序。 从应用程序中删除以下CSS:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css

添加以下CSS以使用海王星主题:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-crisp/resources/theme-crisp-all.css

要查看效果,请尝试以下程序:

这会产生以下结果:

Triton主题

考虑你最初的Hello World应用程序。 从应用程序中删除以下CSS:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css

添加以下CSS以使用Triton主题:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-triton/resources/theme-triton-all.css

要查看效果,请尝试以下程序:

这会产生以下结果:

灰色主题

考虑你最初的Hello World应用程序。 从应用程序中删除以下CSS:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css

添加以下CSS以使用灰色主题:

https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-gray/resources/theme-gray-all.css

要查看效果,请尝试以下程序:

这会产生以下结果:

事件是在类发生的时候触发的。 例如,当一个按钮被点击或元素被渲染之前/之后。

写事件的方法:

Built in events using listeners

Attaching events later

Custom events

内置事件使用侦听器

Ext JS提供了用于在Ext JS文件中编写事件和自定义事件的侦听器属性。

在Ext JS中编写侦听器

我们将通过在面板中添加listen属性来将监听器添加到上一个程序中,如下所示:

Please click the button to see event listener