序言
要是在Ext框架中没有相应的功能,我想许多用户都会自己写一套程序去实现。有一些功能是根据他们的程序而开发的,有些则是通用的,这样其他用户可能就会对此感兴趣。
嗯~我们有了想法了,是需要写一写新的代码,相关的步骤我也懂得,可能面临一个问题,究竟是写扩展(Extension)还是写插件(Plugin)呢?
扩展与插件
我们把两样东西放在一起讨论,可以明确它们之间是有某种很相似的地方。相似的地方在于,它们都是对现有的库的功能进行 修改 或加入新的功能。
扩展与插件均不能独立使用;它们须依赖组件、类运行。
扩展
扩展(extension)在Ext中就是指衍生的子类。假设我们已经有一个附有一些方法的基类,现在欲加入新方法。我们可以框架的继承特性和JavaScript创建新类的语言特性组合新的一个类,包含基类的方法和加入的新方法。
我们这里进行Ext类的扩展。 首先执行函数Ext.extend返回一个新的类,这个类的名称就是新的变量名。 像下例:
MyExtension = Ext.extend(Ext.Panel, {/* 对象的新属性、新方法 */});
接着,我们需要实例化对象:
var myExtension = new MyExtension({/* 可选的配置项 */});
插件
插件不需要从任何Ext类为基础。尽管插件很多时候从Ext.util.Observable哪里扩展,但这不是必须的; 插件其实是可以很灵活的。如果这个插件是为某个组件服务的,就当然没有必要从现有的Ext类:panel,form,grid...写起。
举一个例子,说明如何创建插件:
MyPlugin = function() {/* 代码 */};
然后这样子使用:
var myPanel = new Ext.Panel({
plugins:[new MyPlugin({/* 可选的配置项 */})]
,// 其他myPanel的配置项
});
扩展还是插件?
这要看... 无论写扩展还是写插件都可以达到相同的效果。有的程序员就喜欢写插件,有的喜欢写扩展。总得来说,小一点的功能写成插件,复杂一点的可以写成扩展。插件可以轻松地从组件上移除,扩展就和程序联系很紧密。
总结
一个扩展就是一个新名字出现的一个新类,它是以某个基类为基础,属于类库中的一员。扩展必须好像其他类那样实例化般地使用。
插件会把插入到现有的某个类之中,可灵活地移除,它可以在类库中定义,然后伴随某个类实例化的时候参与运作。
延伸阅读
这是译者的UI blog。
Extending an Ext Class
Writing an Ext Plugin
分享到:
相关推荐
标题 "Extjs User Extensions and Plugins" 指的是在Ext JS框架中开发用户自定义扩展和插件的技术。Ext JS是一个流行的JavaScript库,用于构建富客户端应用程序,它提供了丰富的组件和强大的数据绑定机制。在实际...
"stable-diffusion-webui-extensions" 是一个与人工智能绘画相关的扩展程序,主要应用于Web用户界面。这个扩展可能提供了一系列工具和功能,旨在提升用户在使用AI进行图像创作时的体验和效率。从描述来看,它非常...
微软HEVC视频扩展插件,安装后可以观看杜比视效的视频资源,免费提供 微软HEVC视频扩展插件是一款由微软提供的扩展,用于在Windows 10系统中解码和播放HEVC(High Efficiency Video Coding)编码的视频文件。HEVC是...
1、jira-misc-workflow-extensions-2.5.7.1.jar; 2、jira流扩展插件; 3、提供更多的 触发条件/校验条件/结果处理;
在IT领域,尤其是在Web开发中,Ajax(Asynchronous JavaScript and XML)是一种常用的技术,它使得网页可以在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这极大地提升了用户体验,因为用户不再...
开发Eclipse插件时,理解并熟练使用这些扩展点是至关重要的,因为它们决定了插件的功能范围和与Eclipse核心的集成程度。通过深入学习和实践,开发者可以构建出满足特定需求的定制化开发环境,提升工作效率。
IDEA与VSCode是两种非常流行的集成开发环境(IDE),广泛应用于Java、JavaScript、Python等编程语言的开发。它们都提供了丰富的插件生态系统,以增强其功能和用户体验。"CODEGEEX"是一款针对这两个平台的AI插件,...
针对这种情况,EXT社区提供了丰富的用户扩展(Ux,User Extensions)来增强其功能,如“Ext用户扩展控件---------日期时间选择器,可以精确到某天的某分钟”所描述,这是一个专门为了提供更精确时间选择的控件。...
在C#中,我们通常通过接口来定义插件的行为,确保插件和主程序之间的兼容性。接口定义了插件必须实现的方法和属性,这样主程序就可以根据这些接口调用插件的功能。 实现C#插件架构的关键技术包括: 1. **依赖注入...
"stable-diffusion-webui-extensions 扩展自用"是一个专为Web用户界面设计的扩展,用于增强或定制其功能。稳定扩散(Stable Diffusion)可能是一个开源项目,其Web用户界面可能是数据可视化、协作工具或者某种复杂的...
"chrome设置编码插件: chrome://extensions/" 提到的正是如何在Chrome中安装和管理编码插件的过程。 首先,让我们了解什么是编码。编码是将字符(如字母、数字和符号)转换为计算机可识别的二进制形式,以便于存储...
真正可用的aspmaker 8.02 extensions 扩展包完整版 包含 aspaptcha,aspjpegresize,aspupload, graphical,previewrow,scrollingtable,tinymce,yuicontainer 8个组件。
Icaros Shell Extensions(视频扩展器)是一款视频资源扩展插件,可以让你的 Windows 支持显示大部分主流视频格式文件的预览缩略图,其中包括 mkv、flv、avi、mp4、mov、rmvb、m2ts、ogm 等,可以说Icaros Shell ...
SecoClient Extensions-crx插件是一款专为SecoClient设计的浏览器扩展程序,主要服务于中文(简体)用户。这款插件的核心功能是通过与本地客户端的交互来启用或禁用网络扩展功能,以帮助用户顺利访问内部网络资源。...
umi插件扩展 用于开发Chrome插件的umi插件。 安装 npm i -D umi-plugin-extensions 或 yarn add -D umi-plugin-extensions 使用 :bell:请确保您对Chrome插件开发已经有基本的了解,入门教程: 。 在umi配置文件...
Axure RP Chrome 0.6.4 原型工具Chrome扩展插件,支持最新版本Chrome浏览器,安装方法如下(亲测可用): 1、打开谷歌浏览器,在浏览器中地址栏中输入chrome://extensions/,或者点击浏览器的右上角选择更多工具,...
Revit Extensions 2018插件是一款专为建筑行业设计的高效建模工具,尤其在处理钢筋模型方面表现出色。这款插件旨在优化 Autodesk Revit 的使用体验,通过自动化和简便的操作流程,大大提升了建筑师和结构工程师在...
EXT 扩展是基于 JavaScript 的前端开发框架 EXTJS 的一种增强功能,它提供了一系列丰富的组件和工具,使得开发者能够构建出交互性强、用户体验优秀的 web 应用程序。在本案例中,"Flash 表单上传组件"是 EXT 扩展中...
Tachiyomi的扩展实质上是基于Java编写的模块,它们通过Android的插件框架与主应用进行交互。每个扩展都专注于一个或多个特定的漫画源,例如 MangaDex、Komga 或 Crunchyroll。扩展通过解析网站的HTML内容,提取漫画...