Ext JS是一种强大的JavaScript库,可以用来开发RIA(Rich Internet Applications),也即富客户端的Ajax应用,是一个与后台技术无关的前端Ajax框架。
Ext JS最开始基于YUI(Yahoo!UserInterfaceLibrary)技术,由开发人员JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一个非常优秀的Web开发框架。
对于大多数程序员来说,我们没有任何美术功底,公司的很多项目也没有配备美工,要想开发吸引人眼球的用户界面,一直以来不是一件容易的事情。但是Ext的出现使得开发美观的界面变得容易,Ext提供了表格、树、布局、按钮等很多外观绚丽、功能强大的控件,为我们的日常开发工作节约了大量的时间和精力。更重要的是这个框架是完全面向对象且可扩展的,通过对现有的库的功能进行修改或加入新的功能,来实现Ext框架中没有的功能。
扩展Ext组件
扩展(extension)在Ext中就是指衍生的子类。假设我们已经有一个附有一些方法的基类,现在欲加入新方法。我们可以利用框架的继承特性和JavaScript创建新类的语言特性组合新的一个类。
Ext提供了这样的一个实用函数Ext.extend在Ext框架中实现类继承的机制。这赋予了扩展任何JavaScript基类的能力,而无须对类自身进行代码的修改,扩展Ext组件这是个较理想的方法。
要从一个现有的类创建出一个新类,首先要通过一个函数声明新类的构造器,然后调用新类属性所共享的扩展方法。这些共享的属性通常是方法,但是如果要在实例之间共享数据,应该也一同声明。
JavaScript并没有提供一个自动的调用父类构造器的机制,所以必须通过属性superclass在构造器中显式调用父类。第一个参数总是this,以保证构造器工作在调用函数的作用域。
- 清单1.扩展Ext组件的基本方法
- MyNewClass=function(arg1,arg2,etc){
- //显式调用父类的构造函数
- MyNewClass.superclass.constructor.call(this,arg1,arg2,etc);
- };
- Ext.extend(MyNewClass,SomeBaseClass,{
- myNewFn1:function(){
- //etc.
- },
- myNewFn2:function(){
- //etc.
- }
- });
使用时,我们需要实例化对象:
- 清单2.实例化新的组件对象
- varmyObject=newMyNewClass(arg1,arg2,etc);
掌握了扩展Ext组件的基本方法之后,我们就可以随意构造满足特定需求的组件。然而Ext里已有的组件和示例永远是我们取之不尽,用之不竭的创造源泉。本文以三个Ext组件为基础,“嫁接”了其他组件的功能,形成三个新的组件,实现了现有Ext组件没有的功能。本文的目的,旨在抛砖引玉,希望能给初学Ext的同仁们一点启发和参考,开发出更多、功能更强大的组件。