ExtJS教程是高级Web应用程序开发者必修的一项技能,因为它是一个广泛使用的JavaScript框架,使用它可以快速构建出富客户端应用程序。本文将从入门到精通,介绍掌握ExtJS开发的必修教程。
一、基础知识
在开始学习ExtJS之前,必须具备的基础知识包括HTML、CSS和JavaScript。如果你已经具备这些基础知识,那么你可以直接开始学习ExtJS。
二、入门基础
1. 建立一个ExtJS应用程序
为了建立一个ExtJS程序,需要下载ExtJS,这可以从官方网站或用npm来安装获取。 在下载安装之后,需要准备一个HTML文件,该文件引用所需要的ExtJS文件。
2. 创建一个Panel
一个Panel是一个基本的ExtJS容器,它支持布局管理和事件处理。创建Panel对象的示例代码如下:
```
Ext.create('Ext.panel.Panel', {
title: 'Hello World',
height: 200,
width: 400,
html : 'Hello World!'
});
```
在这个例子中,创建了一个Panel并设置了它的标题(title)、高度(height)、宽度(width)和内容(html)。
3. 布局管理器
一个布局管理器是指负责管理和控制各个ExtJS组件位置和大小的对象。它能够帮助开发人员以一种灵活和可扩展的方式组织应用程序的界面。常见的布局管理器包括:
i. `border`布局管理器:指将一个界面分成五个区域:north、south、east、west和center。
ii. `hbox`布局管理器:指按照水平方向排列组件。
iii. `vbox`布局管理器:指按照垂直方向排列组件。
4. 事件处理
ExtJS通过事件管理器实现事件处理机制。一个事件通常表示一种用户操作或状态变化。通过在组件上注册事件处理器函数,开发人员可以响应该事件。
示例代码
```
Ext.create('Ext.button.Button', {
text: 'Click me',
renderTo: Ext.getBody(),
listeners: {
click: function() {
alert('You clicked the button!');
}
}
});
```
In this code, a button component is created with a click event handler function that displays an alert message.
三、深入理解
1. 如何创建和使用组件
在ExtJS中,可以通过`Ext.create`函数来创建各种组件。
```
Ext.create('Ext.button.Button', {
text: 'Click me',
renderTo: Ext.getBody(),
handler: function() {
alert('You clicked the button!');
}
});
```
细节解释:
i. 'Ext.button.Button':组件的类名。
ii. `text`:按钮上显示的文本。
iii. `renderTo`:按钮将被渲染到的DOM元素。
iv. `handler`:点击按钮时执行的函数。
2. 如何处理数据
ExtJS提供了Store 和 Model对象来处理数据。Store对象是数据的集合,Model对象是描述数据结构的对象。
```
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name', type: 'string' },
{ name: 'age', type: 'int' }
]
});
var store = Ext.create('Ext.data.Store', {
model: 'User',
data: [
{ name: 'Lisa', age: 29 },
{ name: 'Tom', age: 33 }
]
});
store.each(function(record) {
alert(record.get('name') + ' is ' + record.get('age') + ' years old');
});
```
细节解释:
i. `Ext.define`方法:用于定义Model。
ii. `fields`:指定义数据结构的字段。
iii. `Ext.create`方法:用于创建Store。
iv. `model`:指Store使用的数据模型。
v. `data`:在Store中存储的数据。
vi. `store.each`:遍历Store中的所有数据。
vii. `record.get`:获得特定列的列名。
3. 了解组件间的通信机制
在ExtJS中,一个组件可以通过向其他组件发送消息来通信。在这种方式下,调用组件的`fireEvent`方法,并且其他组件可以通过注册事件处理器来监听事件。示例代码如下:
```
var productList = Ext.create('Ext.grid.Panel', {
store: productStore,
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Price', dataIndex: 'price' }
],
listeners: {
itemclick: function(view, record, item, index, e) {
var product = record.get('name');
shoppingCart.fireEvent('addItem', product);
}
}
});
var shoppingCart = Ext.create('Ext.panel.Panel', {
width: 200,
height: 200,
items: [],
listeners: {
addItem: function(item) {
var productList = this.getComponent(0);
productList.add({
xtype: 'component',
html: item
});
this.doLayout();
}
}
});
```
在这个例子中,当用户单击一个商品时,它会将商品名称发送给shoppingCart组件。
四、高级应用
1. 如何使用ExtJS编写单页应用程序(SPA)
单页应用程序(SPA)是指,在一个Web页面中,使用向服务器发送请求来获取新数据的方式,可以避免页面的重新加载。在ExtJS中,可以使用Viewport组件来实现SPA。
```
Ext.define('MyApp.view.Viewport', {
extend: 'Ext.container.Viewport',
layout: 'fit',
initComponent: function() {
var me = this;
me.items = [{
xtype: 'tabpanel',
items: [{
title: 'Home',
xtype: 'panel',
html: 'Welcome to our website!'
}, {
title: 'Products',
xtype: 'productgrid'
}]
}];
me.callParent(arguments);
}
});
Ext.define('MyApp.view.ProductGrid', {
extend: 'Ext.grid.Panel',
store: 'Products',
columns: [
{ header: 'Name', dataIndex: 'name' },
{ header: 'Price', dataIndex: 'price' }
],
initComponent: function() {
var me = this;
me.callParent(arguments);
me.getStore().load();
}
});
```
在这个例子中,Viewport包含一个tabpanel。 tabpanel包含两个选项卡,分别显示欢迎信息和商品信息。
2. 如何使用ExtJS和Websockets
Websockets是一种提供双向通信的网络协议。在ExtJS中,可以使用`Ext.ux.WebSocket`库来处理Websockets通信。在ExtJS中,WebSocket组件可以与任何支持Websockets的后端服务进行通信。
```
Ext.Loader.setConfig({
enabled: true,
paths: {
'Ext.ux.WebSocket': '/extjs/ux/WebSocket'
}
});
Ext.require('Ext.ux.WebSocket');
var client = Ext.create('Ext.ux.WebSocket', {
url: 'ws://localhost:8080',
listeners: {
open: function() {
console.log('WebSocket connection established');
},
message: function(data) {
console.log('Received message: ' + data);
}
}
});
client.send('Hello World');
```
在这个例子中,创建了一个WebSocket客户端,与localhost的8080端口建立连接,并监听打开和消息事件。最后,发送一条消息给服务器。
结论
本文介绍了从入门到精通的ExtJS教程,内容包括基础知识、入门基础、深入理解和高级应用。通过学习和实践,你可以快速掌握ExtJS开发,从而构建出更优秀、有效的Web应用程序。