Board logo

标题: 构建 Ext JS 扩展和插件(1) [打印本页]

作者: look_w    时间: 2018-10-13 17:09     标题: 构建 Ext JS 扩展和插件(1)

简介Ext JS 是一个含有大量特性的综合的 JavaScript 框架,包括跨浏览器兼容的 JavaScript 帮助工具,用于 DOM 遍历和操作,以及数据对象存储。它也处理 Ajax 和直接远程 web 访问,涵盖了 UI 控件和小部件、图和表、以及一个功能强大的数据网格控件,还有很多很多...令人印象深刻。
当使用 Ext JS,或者需要 JavaScript 库或框架开发应用程序时,您可以确定您将需要一些功能,这些功能可能不是开箱即用的,或者不能以您想要的方式运行。谢天谢地,Ext JS 包含一个功能强大的类和组件生态系统,可以轻松地扩展现有特性或者完全构建新组件。在本文中,我们将探讨这个可扩展性,特别是扩展概念和插件。您将了解每个概念的含义以及它们之间的不同。然后,您将学习如何构建您自己的扩展和插件,以及如何追溯现有插件(其他开发人员构建的)的来源,将其用于您的应用程序中,这样就避免了重复性的工作。  
什么是扩展? Ext JS 的扩展是从类或者子类衍生出来的,为支持现有 Ext JS 类包含附加特性而设计的。在使用一个具体组件时,如果您经常需要提供这些参数,扩展基本上和 “预配置类” 一样有用,预配置类本质上是为一个已有的类配置提供一组默认值。例如,您的应用程序通过 Ext.Window 类可以使用一系列弹出窗口,而这些窗口的宽度和长度总是相同的。与其每次都使用 Ext.Window 指定长度和宽度值,不如创建一个含有预配置大小属性的 Ext.Window 扩展。这不仅使您避免了一遍又一遍的重复编写相同的代码,也使您的应用程序更易于维护。如果您需要修改您应用程序弹出窗口的默认大小,您只需要在您代码中的一个地方进行修改,不需要在几个不同位置修改。
预配置类是最基本的扩展类型。除了为类中现有属性提供值,子类也可以添加父类中不包含的新属性和方法(就是说,类是被子类化或者衍生的)
如果您对面向对象编程语言基本原理比较熟悉,您就知道当一个对象被实例化时,类构造函数被自动调用。该函数通常执行一些初始化例行程序,比如,设置类属性的默认值。默认情况下,当您创建一个子类时,它的构造函数只调用其父类的构造函数。然而,通过为子类创建一个构造函数,您可以重写父类构造函数,执行面向子类的功能(例如,设置被子类添加的默认值属性)。Ext 使这一操作非常简单,确保您可以轻松地从子类构造函数调用父类或超级类的构造函数,这样您不需要将父类构造函数的代码添加到子类构造函数。
父类中的重写方法不仅局限于构造函数。您也可以在子类中重写规则函数,从子类中调用重写的父类函数。
什么是插件?插件是用于向已有组件提供附加功能的类。插件的使用并不是直接初始化插件类的一个对象,而是使用该组件的 “plugins” 配置选项将插件附加到这个组件上。使用插件的一个主要优势是,插件不仅可以被附加的组件所使用,也可以被所有从该组件衍生的子类所使用。
在 Ext JS 中使用组件的一个特点就是,多个插件可以被附加到一个组件上,根据需要提供附加功能。这意味着附加功能可以被分解,且仅在需要时使用,来提高应用程序的性能。当然,插件应该以一种与其他插件不冲突的方式写入,否则它们将不能在一个插件中同时使用。            
扩展和插件之间的区别首先,在 Ext JS 中很难分辨扩展和插件之间的不同,尤其是考虑到它们在使用时的相似性。无论如何,它们都向 Ext JS 类提供扩展功能。主要不同之处是它们的编写方式。
Ext JS 扩展是作为一个现有类的子类编写的,它们可以提供附加属性或函数,或者甚至可以通过重写构造函数和其他函数来修改父类的行为。要使用一个扩展,您应该直接创建一个扩展子类对象,然后使用、添加、或者重写特性到父类(它从其中衍生的)。扩展最好在您需要改变一个已有 Ext JS 功能或特性的核心功能时,或者在您想要构建一个全新的组件时使用。
Ext JS 插件是作为类编写的,总是有一个 init 函数。不像扩展,您不需要直接创建一个插件类对象,但是您要使用组件(它所附加的)来注册您的插件。然后,在插件中定义的选项和函数将可被组件本身所用。插件最好在您需要向一个组件添加特性时使用。因为扩展同它的所衍生的父类是紧密耦合的,当您想要您的附加物易于分离以及多个组件和衍生组件同步操作时,插件也提出了一个可行的备用方案。插件必须被附加在一个现有组件中,因为它通常不适合从零开始构建新组件。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0