`
wensiqun
  • 浏览: 68350 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

EXT 组建的生命周期

阅读更多

      这几天再看EXT的书《Ext JS in Action》。看到life cycle.但凡发现带cycle的字眼的技术的貌似都挺重要的。这里当笔记记录一下。

    这里有一幅图: 

     这幅图很好的显示了。ext的生命周期有三个状态:initialization,Render,destruction

   

    能够很好的利用Ext的框架,就必须需要要理解这个生命周期是如何工作的。如果你需要拓展一个组件和插件等等。这就尤为重要。

    首先看看Initialization

   

Initialization

    initialization时期就是组件出生的时候(直白翻译就是这样,原文是“The initialization phase is when the component is born”,怪别扭的),所有配置的设定,事件的注册,和pre-render(真不知道如何翻译。就是将组件放到需要显示的地方)都是在这个时期完成的。如图

接下来是看看上图中的每一个步骤的详细信息:

    1.Configuration的应用(The configuration is applied):在实例化一个Component的一个实例的时候,需要传入一个包含所有所需要的参数和引用的配置对象(configuration object)让这个组件做指定的业务,当然这部分的的完成是在Ext.Component这个基类之前完成了

    2.组件事件的注册(Registration of the base Component events):每一个组件和每一个组件的子类,如果通过默认的方式,那么每一组事件都是从基类开始触发的。以下的一些方法是在被触发之前或者之后发生的:

    enable/disable, show, hide, render, destroy, state restore, state save。如果一个注册事件的处理能够成功返回before events 将会触发和测试,如果不能成功返回将会在action真正被调用的地方取消方法的调用。例如:在myPanel.show被调用的时候,他将会触发beforeshow事件,并且执行注册在该事件上的任何方法。如果beforeshow事件处理的结果返回的是false,那么myPanel将不会显示

    3.ComponentMgr registration(ComponentMgr registration):每一个Component的实例都会注册到ComponentMgr这个class中去,并且有一个ext 产生的唯一的字符串类型的Id(Ext-generated ID),你可以在configuration object中传递一个参数(id)重写这个Ext-generated ID。需要注意的是如果传递的Ext-generated ID已经存在,那么新的Ext-generated ID将会覆盖前一个。如果你想使用自定义的id要注意这个id的唯一性

    4.执行initComponent(initComponent is executed):一个子孙类的initComponent这个方法里执行了很多工作。比如注册指定的事件,指定数据存储类型和子组件(child components)的创建。initComponent的使用是对组件结构的部署,因此在使用的一个关键所在就是要继承(extending)一个component或者是其他的Component的子类。我们在后面会详细介绍initComponent的继承(extending)

    5.Plugins are initialized:如果插件是通过传入到了配置对象(configuration object)中去构造的。那么他们的初始方法将会被调用,并且作为一个引用传递给父component。重要的是要记住,插件被调用的顺序与应用的顺序是一样的

    6.状态的初始化(State is initialized):If the component is state-aware, it will register its state with the global StateManager class. Many Ext widgets are state-aware

    7.Component is rendered:如果renderTo或者applyTo参数传入到了架构中去了,render阶段将会在这个时候开始,否则component将会处于dormant状态,并且等待着render方法被调用。

 

Render

    在这个时期,如果初始化成功了你将会得到该Component一个可视化的反馈(就是图形界面了)。如果初始化时期因为什么原因失败了,那么该Component可能就不能再该时期显示了。For complex components, this is where a lot of CPU cycles get eaten up, where the browser is required to paint the screen and computations take place to allow all of the items for the component to be properly laid out and sized

   

    如果renderTo 或者 applyTo 没有特别指明.那么render方法就必须被调用。在触发的时期,如果该组件不是其他ext component的子组件,那么必须必须调用render方法,传入一个Dom元素的应用:

   

someComponent.render(‘someDivId’);

    如果component是其他组件的子组件,那么他的render的方法将会在父component中被调用。以下是render期间的不同步骤

    1.beforerender is fired:component将会触发beforerender事件并且检测注册事件返回的结果。如果返回false,那么component将会暂停render方法。回想一下在初始化期间的两个步骤:注册核心事件,如果事件返回的结果为false,并且也能够在暂停执行方法。

    2.The container is set:每一个组建需要有一个存在的地方,这个“地方”就是所说的容器,实际上,如果某一组建的renderTo指定了一个引用的元素,那么该组建就会增加一个子div元素到引用的元素。这个元素被称之为container,并且添加一个child到该元素中。如果某个component指明了applayTo,那么这个applayTo的参数的引用就是该component的容器,component仅仅只会添加items到容器中去。在applayTo被引用的Dom元素将会被component管理。You generally pass neither when the component is a child of another component, in which the container is the parent component.只需要传入applayTo或者renderTo。

    3.onRender is executed:对于一个Component的子类,这是非常关键的,所有的Dom元素都会被显示到界面。当继承一个Ext.Component或者其他子类的时候。每一个子类首先都会去预调用父类的onRender.

    4.The component is “unhidden”:许多被render的component隐式的使用默认的Ext Css 类就像“x-hidden”. 如果autoShow被设定了,那么可以覆盖默认的的css类,使用自定义的Css。有一个非常重要的点:在这一个步骤中是不会触发show事件的。因为在这个事件上的监听器还没有被触发。

    5.自定义Css样式(Custom CSS classes or styles are applied):能够通过cls和style参数使用自定义css类和styles。如果设定了该参数,那么他们就会将这些css或者styles应用到组建的容器上去。这里建议用cls代替style,Css的继承规则能够被引用到组建的子组建中去。

    6.render事件的触发(The render event is fired):在这一个步骤,所有需要的元素都已经注入到DOM当中去了,而且styles也已经应用到当中去了。render事件将会被触发,同时触发注册在事件上的处理程序。

    7.afterRender is executed:afterRender事件是个非常关键的方法,他将会在Component基类的render方法之后被自动调用。可以通过它去设置Container的size或者执行其他的方法。所有Ext.Component的子类都会预先去调用Ext.Component的superclass.afterRender方法。

    8.The component is hidden and/or disabled:如果在配置对象configuration object中指明了属性hidden或者disabled其中的某一个为true的话,那么对应为true的hide或者disable方法将会被调用,并且都会触发对应的"before(Action)"事件,which both fire their respective “before<action>” event, which is cancelable(这里不能理解什么意思)。如果两个属性都是为true,并且“before(Action)”事件返回的不是false,这个Component将会隐藏和不可用。

    9.State-specific events are fired:如果Component的状态是state-aware,它将在它的Observable中初始化的state-specifid事件,并且注册this.saveEvent内部方法作为每一个状态事件的处理。

    10.一旦render时期完成了,他就准备开始和用户交互了,除非component隐藏了或者disabled。在调用destory方法之前,它会一直存在于内存中。

 

Destruction

    就像真实的生命一样,在生命当中,死亡是非常重要的时期,Component的Destruction是个关键的任务。例如:从DOM树结构中移除自己以及子元素。ComponentMgr的component注销,事件监听的注销如下图:

 

component的destory方法可以通过父容器调用,或者直接通过代码调用。这里是生命周期的最终时期。

    1.beforedestroy is fired:就像很多“befor<action>”事件。是个可以取消的事件,如果他的处理方法返回的是false,将可以防止component的注销

    2.beforeDestroy is called:这个方法在Component的destory之前调用。在这里做一些移除非组建的items是最佳的选择。例如toolbars或者是button.子类都会预先调用父类的beforeDestroy。

    3.Element and Element listeners purged:如果component已经被rendered,所有被注册到element的处理方法都会被移除,然后element将会从dom结构中被移除。

    4.onDestroy is called:Component类自己的onDestory方法并不会执行任何操作,但是子类可以预先使用这个去执行post-destruction(不知道什么)操作,例如移除数据。至于Container类。它会间接地管理所有在该Container内的子类。并调用其子类的onDestory的方法进行销毁。最终减轻开发者的任务负担

    5.Component is unregistered from ComponentMgr(在ComponentMgr没有注册的Component):该component的引用将会被ComponentMgr删除.

    6.The destroy event is fired:任何注册在事件上的处理方法被该事件触发了之后就表示当前的组建已近不在DOM中了。

    7.Component’s event handlers are purged(清除事件方法):所有事件处理方法的注销是通过component调用的。

   

 

  • 大小: 9.5 KB
  • 大小: 26.7 KB
  • 大小: 28.4 KB
  • 大小: 29.6 KB
0
0
分享到:
评论

相关推荐

    EXT2.0中文教程.rar

    EXT2.0中文教程主要涵盖了Linux操作系统中EXT2文件系统的深入理解和使用方法。EXT2,全称为Second Extended File System,是Linux系统早期广泛使用的默认文件系统。它在1992年由Rebecca Anne Richards开发,作为EXT...

    ext6演示了基本的ext6组建的使用

    在“ext6演示了基本的ext6组建的使用”这个项目中,开发者可能通过一系列的示例文件展示了EXT6的核心功能和基本组件的用法。以下是一些关键知识点: 1. **JSON-Decode.html**:此文件可能涉及到JSON数据解析。EXT6...

    Windows读取Ext4分区的工具 Ext2Read

    1. **支持多种EXT文件系统**: Ext2Read不仅支持EXT2,还支持更先进的EXT3和EXT4文件系统。EXT4是目前Linux发行版广泛采用的文件系统,其特点是速度快、支持大文件和大量文件。 2. **查看与复制**: 用户可以像在...

    在windows下使用Ext2Fsd访问EXT4分区

    在Windows操作系统中,由于默认不支持Linux文件系统如EXT4,因此无法直接读取或写入EXT4格式的分区。但有一些第三方工具可以帮助我们解决这个问题,其中之一就是Ext2Fsd。Ext2Fsd是一个免费的开源软件,专门设计用于...

    ext3.jar ext使用非常多

    EXT,全称EXT JS,是一种基于JavaScript的开源前端框架,主要应用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。EXT3.jar是EXT框架的一个版本,它包含EXT库的Java版本,通常用于Java Web应用程序...

    ext-2.0 ext-2.0 ext-2.0 ext-2.0 ext-2.0

    ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0

    Ext API详解--笔记

    `EXT核心API详解(一) - Ext类.txt`介绍了Ext的基础类,包括`Ext.util.Observable`(观察者模式的实现)、`Ext.app.Application`(管理应用生命周期)等。理解这些类的用法对于构建可维护的应用至关重要。 4. **Ext...

    ext下载包,ext,ext包,ext下载

    EXT是一个流行的JavaScript库,主要用于构建富互联网应用程序(RIA)。它由Sencha公司开发,提供了丰富的UI组件和数据管理功能,让开发者能够创建交互性强、视觉效果出色的应用程序。标题中的"ext下载包"指的是EXT库...

    Windows读写Ext2/Ext3/Ext4文件系统

    可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This ...

    ext教程、ext核心API 、ext中文教程

    EXT,全称EXT JS,是一款基于JavaScript的开源前端框架,由Sencha公司开发,主要用于构建富客户端Web应用程序。EXT提供了一套完整的组件模型、数据绑定、事件系统和强大的布局管理,使得开发者能够创建出功能丰富的...

    Windows 7下使用Ext2Fsd读取写入Linux Ext3&Ext4分区文件

    在Windows操作系统中,由于文件系统不兼容性,通常无法直接访问Linux系统中的Ext3或Ext4分区。然而,有了第三方工具如Ext2Fsd,Windows用户可以实现对这些Linux文件系统的读取和写入操作。本文将详细介绍如何在...

    Java中类的生命周期.doc

    ### Java中类的生命周期 #### 一、概述 在Java编程语言中,类的生命周期是从类被加载到Java虚拟机(JVM)中开始,经过一系列处理直至类被卸载的过程。这一过程中涉及的关键步骤包括类的加载、连接、初始化等。理解...

    ext-4.0.7压缩包

    这些组件包括表格、树视图、表单、面板、窗口等,每个组件都有独立的生命周期和配置选项。 2. **数据绑定**:EXT 4.0.7 引入了强大的数据绑定机制,使得UI组件可以直接与数据源进行双向绑定,数据的改变会自动反映...

    Ext入门-详细教程

    Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-...

    Ext + Jquery Ext + Jquery Ext + Jquery

    Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery

    activity生命周期

    理解Activity的生命周期对于开发高效、稳定的应用至关重要。在Android系统中,Activity有多种状态,每个状态对应不同的行为和资源管理策略。以下是对Activity生命周期的详细解释: 1. **创建(Creation)** - **...

    ext中文教程 ext API

    ext中文教程 ext API ext中文教程 ext API

    ext3.4 ext3.1.0以及ext3.0API

    EXT3.4和EXT3.1.0是EXT3文件系统在不同版本的发展阶段,而EXT3.0 API则是开发人员进行EXT3相关编程时所使用的应用程序接口。 EXT3的主要特点包括: 1. **日志记录**:EXT3采用日志式设计,系统崩溃或非正常关机后...

    ext PPT,EXT 教程,EXT 中文帮助手册,EXT 中文手册,ext_教程(入门到精通),Ext技术程序文档大全.

    EXT,全称EXT JS,是一种基于JavaScript的开源前端框架,专为构建富互联网应用程序(Rich Internet Applications, RIA)设计。EXT提供了丰富的组件库,包括数据管理、用户界面控件和布局管理,使得开发者能够创建...

    Ext Designer EXt UI设计插件

    EXT Designer是一款专为EXT UI框架设计的可视化设计工具,它极大地简化了EXT用户界面的创建过程,让开发者和设计师能够快速、高效地构建出复杂的Web应用程序界面。EXT UI是一种流行的JavaScript库,它提供了丰富的...

Global site tag (gtag.js) - Google Analytics