扩展或插件 (Extension or Plugin )

news/2024/7/24 2:19:12 标签: javascript, ui

Manual:Component:扩展或插件 zh-CN

From Learn About the Ext JavaScript Library

Jump to: navigation, search
Summary: 辨析Ext Extensions(扩展)与Plugins(插件)之间的关系。
Author: Jozef Sakalos, aka Saki (译者:Frank Cheung)
Published: 2008五月二号
Ext Version: 2.x
Languages: en.pngEnglishcn.pngChinese

Contents

[hide]
  • 1 序言
  • 2 扩展与插件
  • 3 扩展
  • 4 插件
  • 5 扩展还是插件?
  • 6 总结
  • 7 延伸阅读

page_edit.png 序言

要是在Ext框架中没有相应的功能,我想许多用户都会自己写一套程序去实现。有一些功能是根据他们的程序而开发的,有些则是通用的,这样其他用户可能就会对此感兴趣。

嗯~我们有了想法了,是需要写一写新的代码,相关的步骤我也懂得,可能面临一个问题,究竟是写扩展(Extension)还是写插件(Plugin)呢?

page_edit.png 扩展与插件

我们把两样东西放在一起讨论,可以明确它们之间是有某种很相似的地方。相似的地方在于,它们都是对现有的库的功能进行 修改 加入新的功能。

扩展与插件均不能独立使用;它们须依赖组件、类运行。

page_edit.png 扩展

扩展(extension)在Ext中就是指衍生的子类。假设我们已经有一个附有一些方法的基类,现在欲加入新方法。我们可以框架的继承特性和JavaScript创建新类的语言特性组合新的一个类,包含基类的方法和加入的新方法。

我们这里进行Ext类的扩展。 首先执行函数Ext.extend返回一个新的类,这个类的名称就是新的变量名。 像下例:

javascript">MyExtension = Ext.Ext., ;

接着,我们需要实例化对象:

javascript"> myExtension =  MyExtension;

page_edit.png 插件

插件不需要从任何Ext类为基础。尽管插件很多时候从Ext.util.Observable哪里扩展,但这不是必须的; 插件其实是可以很灵活的。如果这个插件是为某个组件服务的,就当然没有必要从现有的Ext类:panel,form,grid...写起。

举一个例子,说明如何创建插件:

javascript">MyPlugin =  ;

然后这样子使用:

javascript"> myPanel =  Ext.
     plugins: MyPlugin
    ,
;

page_edit.png 扩展还是插件?

这要看... 无论写扩展还是写插件都可以达到相同的效果。有的程序员就喜欢写插件,有的喜欢写扩展。总得来说,小一点的功能写成插件,复杂一点的可以写成扩展。插件可以轻松地从组件上移除,扩展就和程序联系很紧密。

page_edit.png 总结

  • 一个扩展就是一个新名字出现的一个类,它是以某个基类为基础,属于类库中的一员。扩展必须好像其他类那样实例化般地使用。
  • 插件会把插入到现有的某个类之中,可灵活地移除,它可以在类库中定义,然后伴随某个类实例化的时候参与运作。

page_edit.png 延伸阅读

  • 这是译者的UI blog。
  • Extending an Ext Class
  • Writing an Ext Plugin
Retrieved from " http://extjs.com/learn/Manual:Component:Extension_or_Plugin_zh-CN"

http://www.niftyadmin.cn/n/724477.html

相关文章

VS2010 solution中完美的相对路径引用方法

假设您有一个工程叫solar,路径结构是这样的:公用头路径: d:\solar\public\include公用库路径:d:\solar\public\libmars项目 : d:\solar\marsuranus项目: d:\solar\uranus工具路径 : d:\solar\tools现在mars这个项目中要引用公用头路径和公用…

RegExp

匹配模式: g-全局、i-不区分大小写、m-多行匹配 字面量: var pattern1 /[bc]at/i; var pattern2 new RegExp("[bc]at", "i");RegExp属性: global:布尔值,是否设置了g标志 ignoreCase&#xff1…

子窗体,主窗体,互相传值,组策略,子窗体文本选择,select,length,反射系列

在昨天的教程窗体传值,子窗体,父窗体,反射,reflection,windows,组策略,gpedit.msc,动态创建窗体,谢谢中我写到了,传值遇到的问题,主要是因为子窗体是反射出来的,所以子窗体的属性也应该反射才可以得到,可以看我的上面的教程&#…

MySQL命令行数据操作使用心得(总结版)

Char 0~255 Varchar 0~65535 text 0~65535(只能保存字符) Longtext 0~4294967295(只能保存字符) CMD登陆mysql mysql -u root -p mysql -P 3306 -uroot -p123456 (-P必须大写表示端口) 1,数据库操作databases 创建数据…

手写new、apply、call、bind

// 手写实现new方法// function _new(ctor, ...args) { // let obj new Object(); // // // obj.__ptoto__ Object.create(ctor.prototype); // // 执行构造函数 // ctor.apply(obj, [...args]); // return obj // } // //手写实现apply方法 // Func…

扩展 CheckBoxList 控件 - 系结复选项目(2)

摘要 承上篇「扩展 CheckBoxList 控件 - 系结复选项目」中以整数值来描述复选项目,本文将以另一种方式,利用 Item 的 Value 或 Text 属性来描述复选项目,每个被勾选的项目,会将其 Value 或 Text 属性值,以逗点分隔的方…

浏览器的工作原理

1.用户输入一个url、点击一个链接、提交一个表单。 2.DNS查找 3.tcp三次握手,让两端尝试进行通信在发送数据前,SYN,SYN-ACK,ACK, 4.如果是https请求,进行TLS协商。 TCP慢开始/14kb规则:接受到第一个包的数据内容通常是14kb&#x…