学习背景:三个月之前我对EXT还处于一无所知的状态,迫于新工作的要求,和自我提升的压力,我不得不四处搜罗面着学习EXT,从最简单的helloword学起
知识背景:我有java基础,使用JS进行过web开发
我坚信:没有学不会,只有不会学
开篇
首先要知其然,然后再知其所以然
最好的老师莫过于官网,没有人会比开发公司更了解自己的产品
官网地址: 中文: http://extjs.org.cn/ 英文:http://www.sencha.com/products/extjs
开始学习啦:
按照我惯常的学习思路是要先在官网找到quik start 然后照猫画虎开始学习的,但是这一次有些与众不同,官网的大体浏览让我有些眼花缭乱无从下手,为了尽快入门,我的学习步骤调整如下:
1.官网例子学习helloworld
2.简单教程学习语法
3.各个击破
控件
布局
监听
一、helloworld
地址:ExtJs"入门"
使用版本:ext-3.4.0
建立基本项目:
项目目录:
HelloWerld.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Hello World</title>
- <link rel="stylesheet" type="text/css"
- href="EXT/resources/css/ext-all.css" />
- <script type="text/javascript" src="EXT/ext-base.js"></script>
- <script type="text/javascript" src="EXT/ext-all.js"></script>
- <script type="text/javascript">
- Ext.onReady(function() {
- alert('Hello World!');
- });
- </script>
- </head>
- <body>
- </body>
- </html>
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>QuickStartExt</display-name>
- <welcome-file-list>
- <welcome-file>HelloWorld.html</welcome-file>
- </welcome-file-list>
- </web-app>
效果展示:
之后测试代码如不单独指出,则是直接替换掉alert('Hello World!'); 进行效果测试
二、语法学习(要基本理解,动手实践)
教材:轻松搞定EXTJS (在我的下载资源中可以进行下载阅读)
先通读重要章节,基本目标学会语法
命名空间(namespace)
示例:Ext.namespace("com.aptech");
通常基于命名空间创建新类,按照java 的设计思想,会有封装、继承和多态。Extjs 也不例外,而且Extjs 为OOP 做了很多基础工作,使用起来非常模式化。一个类至少应该有private 和public 成员,且可以派生出子类,并能重写父类的方法。
例:
- Ext.namespace("com.aptech");
- com.aptech.First = function(){
- //私有成员
- var kiss = "中华人民共和国";
- //私有方法
- //公有方法
- return {
- //公有成员
- init: function(){
- alert("init");
- alert(kiss);
- },
- //公有成员
- method: function(){
- alert("method");
- }
- };
- };
注:First 位于com.aptech 命名空间中,有一个私有成员kiss,并且向外部暴露了两个方法init()和method()。其实,在function和return之间定义的成员全总是private,而ruturn内部定义的成员全部是public
模拟继承
- //创建子类
- com.aptech.Second = function(){
- com.aptech.Second.superclass.constructor.apply(this);//调用父类构造方法
- }
- //com.aptech.Second子类继承自父类com.aptech.First
- Ext.extend(com.aptech.Second, com.aptech.First, {
- //新方法
- fun: function(i){
- return i * i * i;
- },
- //重写的方法
- method: function(){
- alert("Second::method")
- }
- });
- //测试
- var second = new com.aptech.Second();
- alert(second.fun(5));
- second.method();
这个我没有太明白,不过不影响我继续学习,暂作记录
配置(config)选项
- Student = function(name, sex){
- this.name = name;
- this.sex = sex;
- }
- //测试
- var student = new Student("李赞红", "男");
- alert("姓名:" + student.name + "\r\n性别:" + student.sex);
apply()---config
- Student = function(config){
- Ext.apply(this, config);
- }
- //测试
- var student = new Student({name: "李赞红", sex: "男"});
- alert("姓名:" + student.name + "\r\n性别:" + student.sex);
注:Ext定义了一个名叫apply()的方法,作用是将第二个参数的成员赋给第一个参数。
Ext.apply()和Ext.applyIf()
- Student1 = function(config){
- this.name = "张海军";
- this.sex = "女";
- Ext.apply(this, config);
- }
- Student2 = function(config){
- this.name = "张海军";
- this.sex = "女";
- Ext.applyIf(this, config);
- }
- var student1 = new Student1({name: "李赞红", sex: "男", birthday: new Date()});
- alert("姓名1:" + student1.name + "\r\n 性别1:" + student1.sex + "\r\n 生日1:" +student1.birthday);
- var student2 = new Student2({name: "李赞红", sex: "男", birthday: new Date()});
- alert("姓名2:" + student2.name + "\r\n 性别2:" + student2.sex + "\r\n 生日2:" +student2.birthday);
结果:
姓名1:李赞红
性别1:男
生日1:Mon Apr 22 2013 11:32:14 GMT+0800
姓名2:张海军
性别2:女
生日2:Mon Apr 22 2013 11:33:14 GMT+0800
三、控件(和java有类似,理解基础上多动手,有印象即可,千万不要死记硬背)
简单的消息框
提示框的语法:
Ext.MessageBox. alert ( String title, String msg, Function fn, Object scope );
参数定义如下:
1、title:标题
2、msg:提示内容
3、fn:提示框关闭后自动调用的回调函数
4、scope:作用域,用于指定this指向哪里,一般不用管他,特殊情况下有用
例:
Ext.MessageBox.alert("提示框", "这是一个提示框", function(){ alert("提示框关闭了"); }) |
|
Ext.MessageBox.prompt("输入框", "请输入您的姓名:", function(btn, txt){ |
|
Ext.MessageBox.prompt("输入框", "请输入您的姓名:", function(btn, txt){ Ext.MessageBox.alert("结果", "您点击了" + btn + "按钮,<br>输入的内容为" +txt); }, this, 100); |
|
Ext.MessageBox.confirm("确认", "请点击下面的按钮作出选择", function(btn){ Ext.MessageBox.alert("您单击的按钮是:" + btn); }); |
Ext.onReady 事件
- Ext.onReady(function(){
- Ext.get("btn").on("click", function(){
- Ext.MessageBox.alert("点击", "我被点击了,非常高兴");
- });
- });
注:
页面加载完成后,Ext.onReady 事件被触发,基本上,除了类封装,与页面相关的操作都会写在该事件中。
Ext.get ( Mixed el):根据HTML标签的id属性获取Ext.Element 对象
on(String eventName, Function fn):为Ext.Element 对象定义一个事件,eventName是事件名称,和传统的事件名称相比不以“on”开头,fn为事件处理函数。从这里可以延伸开去,也可以是 “change”、“keypress”等。
EXT组件(暂时罗列,后期布局不用到处找)
组件有三种类型:基本组件、工具栏组件、表单组件。
基本组件
xtype | class | 说明 |
box | Ext.BoxComponent | 具有边框属性的组件 |
button | Ext.Button | 按钮 |
colorpalette | Ext.ColorPalette | 调色板 |
component | Ext.Component | 组件 |
container | Ext.Container | 容器 |
cycle | Ext.CycleButton | 圆角按钮 |
dataview | Ext.DataView | 数据显示视图 |
datepicker | Ext.DatePicker | 日期选择面板 |
editor | Ext.Editor | 编辑器 |
editorgrid | Ext.grid.EditorGridPanel | 可编辑的表格 |
grid | Ext.grid.GridPanel | 不可编辑的表格 |
paging | Ext.PagingToolbar | 分页组件 |
panel | Ext.Panel | 面板 |
progress | Ext.ProgressBar | 进度条 |
splitbutton | Ext.SplitButton | 可分裂的按钮 |
tabpanel | Ext.TabPanel | 选项面板 |
treepanel | Ext.tree.TreePanel | 树 |
viewport | Ext.ViewPort | 视图 |
window | Ext.Window | 窗口 |
工具栏组件
xtype | class | 说明 |
toolbar | Ext.Toolbar | 工具栏 |
tbbutton | Ext.Toolbar.Button | 按钮 |
tbfill | Ext.Toolbar.Fill | 文件 |
tbitem | Ext.Toolbar.Item | 工具条项目 |
tbseparator | Ext.Toolbar.Separator | 工具栏分隔符 |
tbspacer | Ext.Toolbar.Spacer | 工具栏空白 |
tbsplit | Ext.Toolbar.SplitButton | 工具栏分隔按钮 |
tbtext | Ext.Toolbar.TextItem | 工具栏文本项 |
表单组件
xtype | class | 说明 |
form | Ext.FormPanel | Form面板 |
checkbox | Ext.form.Checkbox | 复选框 |
combo | Ext.form.ComboBox | 下拉列表框 |
datefield | Ext.form.DateField | 日期选择器 |
field | Ext.form.Field | 表单字段 |
fieldset | Ext.form.FieldSet | 字段分组 |
hidden | Ext.form.Hidden | 隐藏表单域 |
htmleditor | Ext.form.HtmlEditor | 在线HTML编辑器 |
numberfield | Ext.form.NumberField | 数字编辑器 |
radio | Ext.form.Radio | 单选按钮 |
textarea | Ext.form.TextArea | 区域文本框 |
以下为阅读教程过程中摘录的几个控件:
日期选择器Ext.DatePicker
- <span style="font-size:12px;">var dp = new Ext.DatePicker({
- renderTo: Ext.getBody(),
- minDate: Date.parseDate("2009-1-1", "Y-m-d"),
- maxDate: Date.parseDate("2999-12-30", "Y-m-d"),
- value: Date.parseDate("2013-4-22", "Y-m-d"),
- handler: function(){
- Ext.MessageBox.alert("日期", Ext.util.Format.date(this.getValue(), 'Y-m-d'));
- }
- });</span>
下拉列表
- var cities = [ [ 1, "长沙市" ], [ 2, "株洲市" ], [ 3, "湘潭市" ],
- [ 4, "邵阳市" ] ];
- var proxy = new Ext.data.MemoryProxy(cities);
- var City = Ext.data.Record.create([ {
- name : "cid",
- type : "int",
- mapping : 0
- }, {
- name : "cname",
- type : "string",
- mapping : 1
- } ]);
- var reader = new Ext.data.ArrayReader({}, City);
- var store = new Ext.data.Store({
- proxy : proxy,
- reader : reader,
- autoLoad : true
- //即时加载数据
- });
- //store.load();
- var combobox = new Ext.form.ComboBox({
- renderTo : Ext.getBody(),
- triggerAction : "all",
- store : store,
- displayField : "cname",
- valueField : "cid",
- mode : "local",
- emptyText : "请选择湖南城市"
- });
- var btn = new Ext.Button({
- text : "列表框的值",
- renderTo : Ext.getBody(),
- handler : function() {
- Ext.Msg.alert("值", "实际值:" + combobox.getValue()
- + ";显示值:" + combobox.getRawValue());
- }
- });
相关推荐
1. **EXT基础**:首先,你需要了解EXT的基本概念,如组件(Components)、容器(Containers)和布局(Layouts)。EXT中的每个可视元素都是一个组件,而容器则用于组织和管理这些组件。布局定义了容器内组件的排列...
这篇文档集合详细介绍了ExtJSP的基础知识以及相关的API,对于初学者来说是一份宝贵的资料。 首先,我们要理解ExtJS的核心概念。ExtJS是一个开源的JavaScript库,它提供了丰富的UI组件,如表格、树形结构、表单、...
“ExtJS使用简明教程.chm”是一个Windows帮助文档,通常包含了一系列关于EXT JS的基础知识、核心概念和实用技巧。这种格式的文档往往结构清晰,易于查阅。它可能会涵盖EXT JS的基本组件如表格(Grid)、面板(Panel...
#### 构建文件系统的基础知识 在深入学习Ext2之前,首先需要了解一些构建文件系统的基本概念: 1. **磁盘分区**:为了更好地组织和管理存储设备上的数据,通常会将磁盘划分为若干个逻辑区域,即分区。 2. **文件...
在"EXT教程"中,你将学习到EXT的基础知识,包括如何初始化应用、创建组件、布局管理以及如何与其他JavaScript库或后端服务集成。EXT的组件化思想是其核心,通过各种组件如表格(Grid)、面板(Panel)、窗口(Window...
EXT的开发涉及到C语言基础、PHP内核理解以及编译原理等多方面知识。以下是一些关于PHP EXT的重要知识点: 1. **EXT的作用**:EXT扩展了PHP的功能,例如MySQLi和PDO用于数据库操作,GD库用于图像处理,JSON用于数据...
手册详细介绍了EXT的基础概念、核心组件以及API使用方法。通过阅读这份文档,你可以了解EXT的基本架构,学习如何创建窗口、面板、表单等常用UI元素,以及如何管理布局、处理事件和数据绑定。 EXT学习文档是进一步...
综合这三份文档,开发者不仅可以全面了解EXT框架的基础知识,还能深入探索其高级特性和最佳实践。无论你是初次接触EXT,还是已经在EXT项目中有一定经验,这些资料都将极大地提升你的开发效率和应用质量。在实际开发...
它可能包含实例代码和逐步指南,解释了基本的组件使用、事件监听、数据模型和数据存储的配置等基础知识。通过这个教程,初学者可以迅速掌握Ext 2.0的核心概念和实践技巧。 3. **EXT2.0中文教程.exe**: 这可能是一个...
"ext北风基础班讲义"显然是一份针对EXTJS初学者的教学资料,特别是集中在第二讲——"信息提示框组件"上。 EXTJS 的组件体系是其核心特性之一,它提供了大量的预定义组件,如窗口(Window)、面板(Panel)、表格...
通过这些资源,你可以系统性地学习Ext JS,从基础知识到实践应用,逐步提升你的技能。Ext JS强大的组件模型和灵活的布局管理使得它可以构建复杂的业务应用,而其丰富的API和社区支持则确保了开发的便利性。学习并...
首先,EXT2.0的教程主要包括两个部分:《EXT2.0简明教程》和《ext基础教程》。这两份教材都是初学者了解EXTjs的重要资源。《EXT2.0简明教程》以CHM(Compiled Help Manual)格式提供,通常包含详尽的API文档和实例...
第一部分:gwtext基础 在这一部分,你将学习到gwtext的基本概念和安装步骤。gwtext是如何与GWT整合,提供增强的组件库和布局管理器的。了解如何在项目中引入gwtext库,并创建第一个gwtext应用。此外,还会讲解gwtext...
2. **教程与示例**: 初学者可以从教程中学习EXT的基础知识,例如创建组件、布局管理、数据绑定等。示例代码提供了实践操作的机会,有助于加深理解。 3. **最佳实践**: 学习EXT的开发文档还能了解到最佳实践,如如何...
综上所述,这个压缩包包含的资源全面覆盖了学习和使用Ext JS所需的基础到进阶知识,特别是对于初学者,可以从中了解到Ext JS的基本结构、组件、事件处理、数据绑定、布局管理等核心概念,以及如何在Java环境下集成和...
1. `ext_core_manual_zhcn.pdf`:这是EXT核心手册的中文版,对于初学者来说是一份重要的参考资料,涵盖了EXT的基本概念和使用方法。 2. `61674451ExtJs.rar`、`430449659extjstest.rar`、`88198564Ext.rar`、`...
这篇指南将着重于EXT4.0的基础知识,帮助初学者快速入门EXT JS的开发。 1. **EXTJS基础** - **获取EXTJS**:EXTJS的下载地址为http://extjs.org.cn/,你可以在这里找到EXTJS的发布包以及相关的支持资源。 - **...
EXT 4.0.7 是一个历史悠久且广泛使用的前端JavaScript框架,主要被用于构建富互联网应用程序(Rich ...尽管如此,EXT 4.0.7 仍然是许多项目的基础,理解它的核心原理和特性对于理解EXT系列框架的演变历程至关重要。