`
sony-soft
  • 浏览: 1105345 次
文章分类
社区版块
存档分类
最新评论

学习Ext第一天(Ext 简介)

 
阅读更多

无论你是Ext库的新手,抑或是想了解Ext的人,本篇文章的内容都适合你。本文将简单地介绍Ext的几个基本概念,和如何快速地做出一个动态的页面并运行起来,假设读者已具备了一些JavaScript经验和初级了解HTML Dom。否则的话,请从阅读初学JavaScript资源开始。

下载Ext

如果你未曾下载过,那应从这里下载最新版本的Ext http://extjs.com/downloads

针对你的下载需求,有几个不同的弹性选项。通常地,最稳定的版本,是较多人的选择。下载解包后,那个example文件夹便是一个探索Ext的好地方!

开始!

我们将使用Ext,来完成一些JavaScript任务。

第一步要做的是,下载本教程的示例文件。Zip文件包括三个文件:ExtStart.html, ExtStart.jsExtStart.css。解包这三个文件到Ext的安装目录中(例如,Ext是在“C:/code/Ext/v1.0”中,那应该在"v1.0"里面新建目录“tutorial”。双击ExtStart.htm,接着你的浏览器打开启动页面,应该会有一条消息告诉你配置已完毕。如果是一个Javascript错误,请按照页面上的指引操作。

在你常用的IDE中或文本编辑器中,打开ExtStart.js看看:

Ext.onReady可能是你接触的第一个方法。这个方法是指当前DOM加载完毕后,保证页面内的所有元素能被Script引用(reference)。你可删除alert()那行,加入一些实际用途的代码试试:

Ext.onReady(function()...{
alert(
"Congratulations!YouhaveExtconfiguredcorrectly!");
}
);

Element:Ext的核心

大多数的JavaScript操作都需要获取页面上的某个元素(reference),好让你来做有趣的事情。传统的JavaScript方法,是通过ID获取Dom节点的:

varmyDiv=document.getElementById('myDiv');

这毫无问题,不过这样单单返回一个对象(DOM节点),用起来并不是太强大和好用。为了要用那节点干点事情,你将会要写不少自定义的代码;另外,对于不同类型浏览器之间的差异,要你处理起来可真头大了。

进入Ext.element对象。元素(element)的的确确是Ext的心脏地带,--无论是访问元素(elements)还是完成一些动作,都要涉及它。Element的API是整个Ext库的基础,如果你时间不多,只想了解Ext中的一个类的话,Element一定是首选!

由ID获取一个Ext Element如下(首页ExtStart.htm包含一个div,ID名字为“myDiv”,然后,在ExtStart.js中加入下列语句):

Ext.onReady(function(){varmyDiv=Ext.get('myDiv');});

再回头看看Element对象,发现什么有趣的东东呢?

  • Element包含了常见的DOM方法和属性,提供一个快捷的、统一的、跨浏览器的接口(若使用Element.dom的话,就可以直接访问底层DOM的节点。);
  • Element.get()方法内置缓存处理(Cache),多次访问同一对象效率上有极大优势;
  • 内置常用的DOM节点的动作,并且是跨浏览器的定位的位置、大小、动画、拖放等等(add/remove CSS classes, add/remove event handlers, positioning, sizing, animation, drag/drop)。

这意味着你可用最小的代码来做各种各样的事情,这里仅仅是一个简单的例子(完整的列表在ElementAPI中)。

继续在ExtStart.js中,在刚才我们获取好myDiv的位置中加入:

myDiv.highlight();//黄色高亮显示然后渐退
myDiv.addClass('red');//添加自定义CSS类(在ExtStart.css定义)
myDiv.center();//在视图中将元素居中
myDiv.setOpacity(.25);//使元素半透明

获取多个DOM的节点

通常情况下,不能由ID获取多个DOM的节点,有可能因为没设置ID,或者你不知道ID,又或者直接用ID方式引用有太多元素了。这种情况下,你会不用ID来作为获取元素的依据,可能会用属性(attribute)或CSS Classname代替。基于以上的原因,Ext引入了一个功能异常强大的Dom Selector库,叫做DomQuery

DomQuery可作为单独的库使用,但常用于Ext,你可以在上下文环境中(Context)获取多个元素,然后通过Element接口调用。幸运的是,Element对象本身便有Element.selcect的方法来实现查询,即内部调用DomQuery选取元素。这个简单的例子中,ExtStart.htm包含若干段落(

标签),没有一个是有ID的,而你想轻松地通过一次操作马上获取每一段,全体执行它们的动作,可以这样做:

//每段高亮显示
Ext.select('p').highlight();

DomQuery的选取参数是一段较长的数组,其中包括W3C CSS3 Dom选取器、基本XPath、HTML属性和更多,请参阅DomQuery API文档以了解这功能强大的库的细节。

响应事件

到这范例为止,我们所写的代码都是放在onReady中,即当页面加载后总会立即执行,功能较单一——这样的话,你便知道,如何响应某个动作或事件来执行你希望做的事情,做法是,先分配一个function,再定义一个event handler事件处理器来响应。我们由这个简单的范例开始,打开ExtStart.htm,编辑下列的代码:

Ext.onReady(function(){
Ext.get(
'myButton').on('click',function(){
alert(
"Youclickedthebutton");
});
});

加载好页面,代码依然会执行,不过区别是,包含alert()的function是已定义好的,但它不会立即地被执行,是分配到按钮的单击事件中。用浅显的文字解释,就是:获取ID为'myDottom'元素的引用,监听任何发生元素被单击的情况,并分配一个function,以准备任何单击元素的情况。

正路来说,Element.select也能做同样的事情,即作用在获取一组元素上。下一例中,演示了页面中的某一段落被单击后,便有弹出窗口:

Ext.onReady(function(){
Ext.select(
'p').on('click',function(){
alert(
"Youclickedaparagraph");
});
});

这两个例子中,事件处理的function均是简单几句,没有函数的名称,这种类型函数称为“匿名函数(anonymous function)”,即是没有名的的函数。你也可以分配一个有名字的event handler,这对于代码的重用或多个事件很有用。下一例等效于上一例:

Ext.onReady(function(){
varparagraphClicked=function(){
alert(
"Youclickedaparagraph");
}
Ext.select(
'p').on('click',paragraphClicked);
});

到目前为止,我们已经知道如何执行某个动作。但当事件触发时,我们如何得知这个event handler执行时是作用在哪一个特定的元素上呢?要明确这一点非常简单,Element.on方法传入到even handler的function中(我们这里先讨论第一个参数,不过你应该浏览API文档以了解even handler更多的细节)。在我们之前的例子中,function是忽略这些参数的,到这里可有少许的改变,——我们在功能上提供了更深层次的控制。必须先说明的是,这实际上是Ext的事件对象(event object),一个跨浏览器和拥有更多控制的事件。例如,可以用下列的语句,恢复这个事件的指定的DOM节点:

Ext.onReady(function(){
varparagraphClicked=function(e){
Ext.get(e.target).highlight();
}
Ext.select(
'p').on('click',paragraphClicked);
});

注意指定的是DOM节点,所以我们首先将其恢复成为适当的元素,然后执行欲完成的事件,这个例子中,我们看见段落是高亮显示的。

分享到:
评论

相关推荐

    Ext 开发指南 学习资料

    4.8.4. 当某一天,需要往form加个图片什么的,该咋办? 4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 4.11. 自动把数据填充到form里 5. 雀跃吧!超脱了一切的弹...

    EXT2.0中文教程

    4.8.4. 当某一天,需要往form加个图片什么的,该咋办? 4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和...

    学习YUI.Ext基础第一天

    在《学习YUI.Ext基础第一天》这篇文章中,作者回顾了过去对于Web开发技术的看法与实践经验,特别是关于JavaScript及其在构建现代Web应用中的作用。文章通过两个帖子的摘录,深入探讨了JavaScript的重要性以及它在...

    Ext.data.Store的基本用法

    #### 一、Ext.data.Store简介 `Ext.data.Store`是ExtJS框架中用于管理数据的核心组件之一。它主要负责数据的存储、加载、更新等操作,并且提供了多种方法来方便地处理这些数据。本文将详细介绍`Ext.data.Store`的...

    学习YUI.Ext 第四天--对话框Dialog的使用

    ### 学习YUI.Ext 第四天--对话框Dialog的使用 #### 一、引言 随着Web应用程序的发展,用户界面的设计变得越来越重要。YUI.Ext 是一款强大的JavaScript框架,它提供了一系列丰富的用户界面组件来帮助开发者快速构建...

    EXT框架皮肤 不止天蓝色

    6. ext2样式:这可能是指EXT框架的第二代皮肤,可能具有与EXT2版本兼容的特性。 "作用方法.txt"文件很可能是包含了如何将这些皮肤应用到EXT框架中的指南,包括如何引入CSS文件、设置配置项等步骤。按照这个文本的...

    学习YUI.Ext 第三天

    在学习YUI.Ext的第三天,我们回顾和深化了一些JavaScript的基础概念,特别是关于变量和数据类型的细节。首先,我们要理解变量的声明和作用域。全局变量是未使用`var`关键字声明的变量,可以在整个程序中访问,而局部...

    EXT日期格式说明

    8. **Z**:在年内的第几天,从0开始,闰年是365。 9. **W**:ISO-8601格式的年内星期数,从星期一开始,范围01-53。 10. **F**:月份的完整英文名称,如January到December。 11. **m**:月份的两位数表示,不足两...

    学习YUI.Ext 第二天

    在JavaScript的世界里,YUI.Ext是一个强大的库,它基于Yahoo! User Interface Library (YUI)构建,提供了丰富的组件和布局管理功能,使得开发者能够轻松创建交互式的Web应用程序。今天我们将深入探讨JavaScript的...

    学习YUI.Ext 第六天--关于树TreePanel(Part 1)

    在本文中,我们将深入探讨YUI.Ext库中的一个重要组件——TreePanel。TreePanel是一个用于构建交互式树形结构视图的组件,它在YUI.Ext 0.40版本中首次引入。尽管YUI自身已经提供了TREE VIEW组件,但开发者Jack Slocum...

    Ext JS学习资料(博客园第一版)

    详细整理了一整套ExtJs的学习资料!从基础到精通实例讲解~~你们会有很大收获的

    学习YUI.Ext 第七天–关于ViewJSONView

    在学习YUI.Ext框架的过程中,了解和掌握View和JSONView组件是非常重要的。View组件和它的子类JSONView在处理不同类型的数据展示上有各自的优势。在一些需要展示二维关系数据的场景中,比如表格,我们通常会使用Grid...

    学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)

    ### 学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点) #### 引言 在本篇文章中,我们将深入探讨如何使用YUI.Ext库中的TreePanel组件来实现异步获取树节点的功能。不同于同步加载方式,异步加载能够显著...

    HTML第一天.xmind

    - HTML 指的是超文本标记语言 (**H**yper **T**ext **M**arkup **L**anguage)是用来描述网页的一种语言。 - HTML 不是一种编程语言,而是一种标记语言 (markup language) - 标记语言是一套标记标签 (markup tag)

    Linux驱动学习第03天-内核以及文件系统制作

    获取.config 文件是获取内核配置的第一步。通过复制 Tiny4412 配置文件可以获取到基本的内核配置。取消内核安全模式可以提高内核的性能。 选择内核支持的文件系统是非常重要的。不同的文件系统有不同的特点和优势。...

    学习YUI.Ext 第六天–关于树TreePanel(Part 2异步获取节点)

    异步取节点的思路是这样的: 1、先定义一个初始化节点(也可以不定义,看个人需求) 2、yui-ext根据该节点id请求服务器,获得子节点各属性 3、循环 特点:可以在上一级目录中,在服务器端预先将该节点是否有子节点...

Global site tag (gtag.js) - Google Analytics