Extjs4快速上手二——基础知识(一)

原文 http://www.cnblogs.com/good-temper/archive/2013/04/02/2996544.html

首先声明一下,在此介绍的内容多数来自“Extjs中文学习手册”,这好像是一位前辈的博文整理,想快速全面学习Extjs4的可以看一下。

     1.1 下载Extjs4

               下载地址:http://extjs.org.cn/ (也可以去官方下),版本4.1.1

     1.2 在项目中加入Extjs文件

                可以直接在项目的WebRoot文件加下新建ext,将下载文件加压后全部放入,但是这样往往会导致Myeclipse直接卡死,而且文件大概有200多M,这对于一个小项目来说绝对是不可接受的。其实不必怕,有经验的人都知道,包里边多数都是源码、Demo和API文档,真正需要引入项目的其实没几个。需引入的文件如下:

            

  1.3 Extjs布局

    fit布局:在Fit布局中,子元素将自动填满整个父容器。注意:在fit布局下,对其子元素设置宽度是无效的。如果在fit布局中放置了多个组件,则只会显示第一个子元素。

    border布局:border布局也称边界布局,他将页面分隔为west,east,south,north,center这五个部分,我们需要在在其items中指定使用region参数为其子元素指定具体位置。我们的面主框架就采用这种布局方式。

            注意:north和south部分只能设置高度(height),west和east部分只能设置宽度(width)。north south west east区域变大,center区域就变小了。

      参数 split:true 可以调整除了 center四个区域的大小。

      参数 collapsible:true 将激活折叠功能, title必须设置,因为折叠按钮是出现标题部分的。

      center 区域是必须使用的,而且 center 区域不允许折叠。 Center区域会自动填充其他区域的剩余空间。尤其在 Extjs4.0 中,当指定布局为 border时,没有指定 center 区域时,会出现报错信息。

    accordion布局:accordion布局也称手风琴布局,在accordion布局下,在任何时间里,只有一个面板处于激活状态。其中每个面边都支持展开和折叠。accordion布局:accordion布局也称手风琴布局,在accordion布局下,在任何时间里,只有一个面板处于激活状态。其中每个面边都支持展开和折叠。

    card布局:这种布局用来管理多个子组件,并且在任何时刻只能显示一个子组件。这种布局最常用的情况是向导模式,也就是我们所说的分布提交。

    anchor布局:将使组件固定于父容器的某一个位置,使用anchor布局的子组件尺寸相对于容器的尺寸,即父容器容器的大小发生变化时,使用anchor布局的组件会根据规定的规则重新渲染位置和大小。

 Absolute布局:继承Ext.layout.container.Anchor 布局方式,并增加了X/Y配置选项对子组件进行定位,Absolute布局的目的是为了扩展布局的属性,使得布局更容易使用。

    column布局:一般被称为列布局,这种布局的目的是为了创建一个多列的格式。其中每列的宽度,可以为其指定一个百分比或者是一个固定的宽度。

  1.4 Extjs代码相关

    Extjs的特点之一就是面向对象编程,这让我们能够像写java代码那样编写界面和前端的一些处理代码。但是对于一个非专业的前端开发人员来说,去学习熟悉Ext那对类库实在很费劲,所以我觉得我们这类路过党(偶尔用用而已),只要知道一些基本的类就行了。

      (1).Extjs4的代码是从一个Ext.application({})的方法开始的,这个相当于我们项目中的main函数。

      (2).和net一样,Extjs4中也有命名空间的概念,而且命名结构通常和文件结构一致,这点和java的包很相似。

      (3).Extjs本身提供错误处理机制和调试函数,但是我觉得作为业余人士而言,一般还是不要用,只要运行正常,没有异常抛出即可,而调试我觉的Chrome/Firefox+console.log()一般就能搞定。

      (4)至于其他的可以去查看API文档即可。

    下边是一个Extjs TabPanel类的定义

Ext.define('sxpt.view.TabPanel',{    //类名
    extend: 'Ext.tab.Panel',       //父类
    initComponent : function(){     //初始化方法
        Ext.apply(this,{         //Ext.apply(X1,X2),将对象X1拷贝至X2,这里目的是见这个面板拷贝至‘content-panel’中作为首页
            id: 'content-panel',
            region: 'center',
            defaults: {
            activeTab: 0,
            border: false,
            items: [{
              id: 'HomePage',
              title: '首页',
              iconCls:'home',
              items:[
                  {
                    xtype: 'textfield',
                    name: 'name',
                    fieldLabel: '测试'
                  }
              ]
            }]
        });
        this.callParent(arguments);
    }
}); 

    可以结合资料了解一下这段代码的大概意思,重点是熟悉Extjs4的编码方式。

  1.5 Extjs 数据定义、存储

    Extjs里边有两个很核心的对象:model模型类和store存储类,前者我们可以理解为java的model类,定义了存储数据的格式,后边可以理解为一个实例化的model类集合,一般后台传来的列表数据使用store存储。下边是一个例子:

model:
Ext.define('sxpt.model.User', {
    extend: 'Ext.data.Model',
    fields:  ['loginid', 'name','role','email','grade']
});

store:
Ext.define('sxpt.store.User',{
    extend: 'Ext.data.Store',
    requires: 'sxpt.model.User',
     model: 'sxpt.model.User',          
     autoLoad: true,                //是否自动加载,即是否自动向后台请求数据
     pageSize:1,                  //设置分页大小
     proxy: {                    //这是请求代理,实现异步想后台请求数据
        type: 'ajax',
        url: 'user_getstudent',
        reader: {                  
            type: 'json',
            root: 'ls',
            successProperty: 'success',
            totalProperty: 'totalCount'
        }
    }
});

  1.6 Extjs 向后台请求数据    

    Extjs本身是基于jquery的框架,所以其请求数据的方式与jquery一致,只不过很多时候用起来更简单。需要明确一点的是Extjs使用json格式数据和后台交互,当然也可以使用xml格式,这个自行研究吧。

    Extjs向后台请求数据主要的方式就是Ext.Ajax.request,应该也有其他方法,但是目前就用过这一个(上边store的proxy也是使用的这个),谁让咱是业余人士呢。看代码:

          Ext.Ajax.request({
                url: "链接", //Response.Write("[{username:'likeshan',age:20},{username:'liudehua',age:50}]");
                params: { id: 1 },//传递参数到服务器中
                timeout: 60000,//设置请求超时时间
                method: "POST",
                success: function (response, operation) {
                    Ext.Array.each(eval_r(response.responseText), function (item) {//注意eval里面放的一定是js的可执行代码,就是js认识的代码,在这里是数组这是可以认识的
                        alert(item.username);
                    });
                },
                failure: function (response, operation) {
                    alert(response.responseText);
                }
            });

    这里需要特别提醒的是Extjs4大多数情况下采用异步请求,也就是发起请求后外部也不知道他是么时候请求完成,所以要注意想获取请求后的数据只能在Ajax内部方法中访问,如success、store的load方法等,当初我就在这点上栽了很大跟头。

    那么有时候我们希望能够同步获取数据该怎么办呢?只要将Ext.Ajax.request中的async设为false即可,可以看个例子:

var name;
Ext.Ajax.request({
    url:'common_login_userinfo',
    method: 'post',
    async :  false,//同步请求数据
    success: function(result, request) {
       name=Ext.JSON.decode(result.responseText).lui.role;

    }
});
console.log(name);      //如果不设置同步,这里一般输出是undefine(即null),为什么说一般呢?都说过了是异步请求,如果请求已经完成了,那就可能输出正确的值(比如在                  上一步打个断点暂停一会),当初我调试时发现都有值,但是控制台输出却是undefine,当时都快抓狂了。

  今天就先写发这里吧,明天接着开始写基础二,重点介绍Extjs的MVC结构。

  呵呵,出去跑步,然后看看面试宝典,为找工作做准备,应届生伤不起啊╭(╯^╰)╮。

时间: 2024-12-23 03:34:06

Extjs4快速上手二——基础知识(一)的相关文章

Extjs4快速上手二——基础知识(二)

原文 http://www.cnblogs.com/good-temper/archive/2013/04/07/3003270.html 事隔几天继续开写,由于水平所限理论的东西写起来的确很费劲,现在就将就着写吧,等后边的实践部分或许会好点.今天主要讲讲Extjs4的MVC. 1.1  谈谈MVC MVC,这个概念或许算是当下最流行的设计模式,java中的SSH.SpringMVC,.net的MVC框架,php的smarty等,哪门语言不来个MVC框架都不好意思说自己是主流的.下边是贴过来的一

Kinect for Windows SDK开发入门(二)基础知识 上

上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础. 每一个Kinect应用都有一些基本元素.应用程序必须探测和发现链接到设备上的Kinect传感器.在使用这些传感器之前,必须进行初始化,一旦初始化成功后,就能产生数据,我们的程序就能处理这些数据.最后当应用程序关闭是,必须合理的释放这些传感器. 本文第一部分将会介绍如何探测初始化几释放传感器,这是非常基础的话题,但是对于基于Kinect开

Extjs4快速上手四——实现菜单

原文 http://www.cnblogs.com/good-temper/archive/2013/04/16/3023263.html 这几天状态不佳,杂事太多有些烦心,这一次就少讲点吧. 本次将主要讲Extjs树形菜单的实现.在很多系统里边,树形菜单被广泛应用,主要因为其有清晰的层次结构.记得最早见到的树形菜单是通 过<ul><li>实现的,非常简单.之后用C#的现成控件拖拽了一个,当时还沾沾自喜.再后来在学习师兄的一个通用后台代码 时,看到了梅花雪,当时感觉太强大了,每个节

Extjs4快速上手三——实现主界面

原文 http://www.cnblogs.com/good-temper/archive/2013/04/12/3015843.html 晕啊,今天不顺啊,白天毕设因为一个小问题耽误了很长时间,刚写了一半了突然浏览器又卡死,打开后又待重新写...... 1 创建项目 这个不多说,新建个Web project都会吧. 2 导入Extjs文件 在WebRoot下新建ext文件夹,将下载的ext包中如下文件拷入: 3 创建所需文件夹及文件 按照如下结构创建文件夹及文件: 绿色框住的为本次必须文件.

MFC 基础知识:主对话框与子对话框(二)

(仅供使用VS MFC初学者学习,高手莫见笑)接"MFC 基础知识:主对话框与子对话框(一)"的内容在"MFC 基础知识:主对话框与子对话框(一)"中Edit Control(编辑框)控件中输出内容,主要是想讲讲在创建的子对话框中如何实现一些操作:即添加OnInitDialog初始化函数的操作,这里的操作VS2012与VC++6.0略有些改动. 一. 主对话框编辑框中输出内容 1.找到主对话框XXXDlg.cpp中的OnInitDialog()初始化函数,在函数注释

java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

一.基础知识 在了解各种字符集之前我们需要了解一些最基础的知识,如:编码.字符.字符集.字符编码基础知识. 编码 计算机中存储的信息都是用二进制表示的,我们在屏幕上所看到文字.图片等都是通过二进制转换的结果.编码是信息从一种形式或格式转换为另一种形式的过程,通俗点讲就是就是将我们看到的文字.图片等信息按照某种规则存储在计算机中,例如'c'在计算机中怎么表达,'陈'在计算机中怎么表达,这个过程就称之为编码.解码是编码的逆过程,它是将存储在计算机的二进制转换为我们可以看到的文字.图片等信息,它体现的

[Python] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

        通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Python处理txt汉字文字.二维列表排序和获取list下标.希望文章对你有所帮助或提供一些见解~ 一. list二维数组排序         功能:已经通过Python从维基百科中获取了国家的国土面积和排名信息,此时需要获取国土面积并进行排序判断世界排名是否正确.         列表基础

《Axure RP8产品原型设计快速上手指南》一第1章 基础界面1.1 默认界面

第1章 基础界面 Axure RP8产品原型设计快速上手指南 1.1 默认界面 在经历一个个漫长的beta版本之后,我们终于迎来了Axure RP8版本的正式发布,其LOGO从以极具扁平化的蓝色为主色调进化以紫色为主色调.Axure的每一次版本发布都是整个产品界瞩目的事件,从RP7版本刚发布我们就在畅想RP8版本的发布会有哪些变化. 从本次发布的版本来看,Axure RP8在整体UI方面更加扁平化,更加突出一些核心功能和灰度原型的精髓,添加和改善了一些功能.从本节开始我们会一点点介绍全新的Axu

[Python学习] 专题二.条件语句和循环语句的基础知识

        前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括:         1.条件语句:包括单分支.双分支和多分支语句,if-elif-else         2.循环语句:while的使用及简单网络刷博器爬虫         3.循环语句:for的使用及遍历列表.元组.文件和字符串 前言: 语句块         在讲诉条件语句.循环语句和其他语句之前,先来补充语句块知识.(前面讲函数时已经用到过)