论坛首页 Web前端技术论坛

组件的管理与XType

浏览 2939 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-18  
   早在Ext 1.x的时候就有Ext.ComponentMgr这个类了,但那时仅是一个雏形,到Ext 2.0的时侯才作为重要的成员,参与到组件的对象模型中。

      Ext将页面中的组件的创建、渲染和销毁抽象成为组件的对象模型。全部的组件均支持延时渲染(lazy.rendering)即有需要的情况才会真正地渲染。

      在加载JS文件时,也就是定义类的时候,每个主要的组件类如:GridPanel、Panel和DataView都会把自己注册登记到组件管理器中(Component Manager)。注册登记的那个名字叫做“xtype”。

      浏览2.0例子的代码你或许会发现就有“xtype”的配置项。XType配置项代表着这个对象属于哪个组件类型,而到时(渲染时)就会调用相关的构造器(constructor)。整个过程无须手工调控,均由ComponentMgr对象内部控制。总得来说,用字面化对象(object literal)的方式定义了一个组件实例的功能,不失为一种便捷的做法(handy shortcut)。

      另外你只要在服务端生成JSON便可动态加载这些组件。由于Ext为全体组件提供注册登记的维护,我们可方便地使用Ext.getCmp(COMPONENTID)来访问页面上任意一个组件,这样的好处是不要考虑这些组件实例之引用所在的位置,就可各组件间相互操作。譬如,我们需要从Window的实例中获取GridPanel的引用,你可以从组件管理器中获取组件的引用,免于查找那个Window实例的变量。

      虽然Ext.getCmp看起来优点不少,但我建议你谨慎使用和避免过于滥用。事因这样会强制将几个语义上不同的几个类捆绑在一起,组合成一个比较“笼统”的类。如在标准的面向对象的实践中或实现一个观察者模式的时候,采用Ext.getCmp作为一种设计的方案就不太适宜了。
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics