Ext JS框架入门
一、概述:
ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。
功能丰富,无人能出其右。
无论是界面之美,还是功能之强,ext的表格控件都高居榜首。
单选行,多选行,高亮显示选中的行,拖拽改变列宽度,按列排序,这些基本功能ExtJS轻量级实现。
自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。
再加上可编辑grid,添加新行,删除一或多行,提示多行数据,拖拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,这些功能竟然都在ext表格控件里实现了。
其实从ext3开始就支持各种方式的统计,且有控件支持excel导出。
二、为什么选择Ext JS:
在java开发中,选择合适项目的框架是件为难的事情,他需要从团队开发的技术力量和项目需求等各方面来考量。客户的页面开发也面临同样情形。如表列出了目前常用的技术。
表 前端开发技术的选择
三、Ext JS 体系结构
四、Ext JS 类库的介绍:
Adapter: 负责将里面提供第三方底层库(包括Ext自带的底层库)映射为Ext所支持的底层库。
Air:Ext对基于Air可视化编辑器的支持。
Build: 压缩后的ext全部源码(里面分类存放)。
Docs:APL帮助文档。
Exmaples:提供使用ExtJS技术做出的小实例。
Package:Ext提供常用控件。
Resources:ExtUI资源文件目录,如CSS、图片文件都存放在这里面。
Source:无压缩Ext全部的源码(里面分类存放)遵从Lesser GNU(LGPL)开源的协议。
Ext—all.js:压缩后的Ext全部源码。
Ext-all-debug.js:无压缩的Ext全部的源码(用于调试)。
Ext-core.js:压缩后的Ext的核心组件,包括sources/core下的所有类。
Ext-core-debug.js:无压缩Ext的核心组件,包括Sources/core下的所有类。
五、应该先导入两个js文件与一个css样式表。一定注意顺序和路径。标准格式为:
六、窗体实例
实例1:
- // window.onload = function(){};
- // 当窗体加载完毕后,触发该匿名事件
- Ext.onReady(function() {
- // Ext.MessageBox.alert();
- // Ext.MessageBox.alert("hihi!");
- // 首先Ext
- // Javascript类
- // 声明一个类 toString 方法
- function User(name, sex, age) {
- this.name = name;
- this.sex = sex;
- this.age = age;
- this.showMsg = function() {
- Ext.MessageBox.alert("演示js原始的创建对象的方法", "创建user1对象的姓名是:"+ this['name'] + " 性别是:" + this['sex']+ " 年龄是:" + this['age']);
- }
- }
- // jsUser对象添加一个方法
- // 创建类的对象
- var user1 = new User("王晓丽", "女", 20);
- // user1.name user1['name']
- // 利用Object的扩展一个get方法
- Object.prototype.get = function(args) {
- return this[args];
- }
- // alert(user1.get("name"));
- // alert(user1.toString());//[Object,Object];
- //Object toString 有
- //Ext.Object 对Object的扩展
- alert(Ext.Object.getKey(user1,'王晓丽'));
- var objValues = Ext.Object.getValues(user1)
- alert(objValues.join("\n"));
- // user1.toString();
- var user2 = {
- name : "晓丽",
- sex : "女",
- age : "20",
- toString : function() {
- Ext.MessageBox.alert("演示js原始的创建对象的方法", "创建user2对象的姓名是:"+ this['name'] + " 性别是:" + this['sex']+ " 年龄是:" + this['age']);
- }
- };
- // Array数组
- var arrs = [11,1 2,1 3,1 4, 15, -13, -14];
- // 遍历数组
- /*
- * for(var i=0;i<arrs.length;i++){ alert(arrs[i]); }
- */
- // 过滤值小0的排除
- /* * for(var i=0;i<arrs.length;i++){ if(arrs[i]>0){ alert(arrs[i]); } }
- */
- var newArrs = Ext.Array.filter(arrs, function(item) {
- if (item > 0) {
- //真假 如果返回的是true 就保留数组元素如果是false 就不保留数组元素
- return false;
- } else {
- //不处理操作
- return true;
- }
- }, this);
- //alert(newArrs.join("\n"));
- /*Ext.Array.each(newArrs, function(item) {
- alert(item);
- });*/
- });
实例2:
- Ext.onReady(function(){
- //Ext.window窗体
- //创建一个窗体对象
- /* var win = new Ext.window.Window({
- width:300,
- height:400,
- title:"第一个窗体"
- });*/
- //调用窗体的显示的方法
- // win.show();
- //extjs4.0
- //name必须使用"Ext.window.Window" fullName, {对象参数的设置}
- var win1 = Ext.create("Ext.window.Window",{
- width:300,
- height:400,
- title:"第一11111111个窗体"
- }).show();
- //Ext.create is alias for Ext.ClassManager.instantiate.
- var obj = {
- hi:function(){
- alert("hi");
- }
- };
- //obj.hi();
- //Function对象 = Ext.Function.alias(对象,该对象方法名称);
- var say = Ext.Function.alias(obj,"hi"); //Function
- //在使用这个对象的时候 say();
- say();
- });
实例3:
- Ext.onReady(function(){
- //extjs4.0自带的窗体
- var win = Ext.create("Ext.window.Window",{
- width:300,
- height:400,
- title:"第一11111111个窗体"
- });
- //自定义一个窗体
- Ext.define("my.pck.myWindow",{
- extend:"Ext.window.Window",
- width:200,
- height:300,
- title:"你好",
- initComponent:function(){
- this.callParent(arguments);
- }
- });
- /* var myWin = new my.pck.myWindow({
- });
- myWin.show();*/
- Ext.create("my.pck.myWindow",{
- title:"你坏",
- width:400
- }).show();
- });