Ext JS - Learning Center

Manual:Component:Extension or Plugin (Portuguese)

From Learn About the Ext JavaScript Library

Jump to: navigation, search
Summary: Traz um ponto de vista sobre Ext Extensions e Plugins, e auxilia você a decidir se desenvolve uma extensão ou um plugin.
Author: Jozef Sakalos
Published: April 20, 2009
Ext Version: 2.x
Languages: en.png English cn.png Chinese kr.png Korean

br.png Portuguese

Contents

Prefácio

Acredito que muitos usuários de Ext já pensaram em adicionar a uma classe uma funcionalidade customizada que não está presente na biblioteca Ext. Algo que é específico às suas aplicações, ou não tão específico de forma que outras pessoas também poderiam se interessar por essa funcionalidade.

OK, temos a idéia, sabemos o que o novo código deve fazer, sabemos até mesmo como desenvolvê-lo, mas o que devemos escrever? Uma Extensão ou um Plugin?

Extensões e Plugins

O fato de estarmos discutindo sobre eles juntos, e o fato de podermos estar indecisos sobre qual utilizar, faz deduzir que eles devem ter algo em comum. Verdade, eles têm. Ambos adicionam alguma funcionalidade a uma biblioteca existente ou modificam um componente da biblioteca.

Nem a extensão e nem o plugin podem existir sozinhos; eles precisam ter um componente, uma classe, que eles estendem ou na qual são inseridos.

Extensão

Uma extensão (no mundo Ext) é de fato uma classe derivada. Vamos imaginar que temos uma classe base com alguns métodos genéricos na qual queremos adicionar alguns métodos mais específicos. Então, utilizando o framework de herança de uma biblioteca ou linguagem, criamos uma nova classe que contém tanto os métodos da classe base quanto os novos métodos adicionados.

Escolhemos uma classe Ext existente, estendemos ela utilizando a função Ext.extend, e o resultado é uma nova classe com um novo nome. Por exemplo:

MyExtension = Ext.extend(Ext.Panel, {/* objeto com novas propriedades e métodos */});

Posteriormente, quando precisamos de um objeto:

var myExtension = new MyExtension({/* objeto de configuração opcional */});

Plugin

Um plugin, por outro lado, não precisa de nenhuma classe Ext existente. Embora plugins freqüentemente estendam a classe Ext.util.Observable, isso não é obrigatório; eles podem ser escritos do zero. Claro, desenvolver um plugin sem ter um alvo no qual inseri-lo não faz sentido, então sempre desenvolvemos plugins para uma classe Ext existente: panel, form, grid, data view, etc.

Por exemplo, criamos um plugin como:

MyPlugin = function() {/* código */};

E o utilizamos dessa forma:

var myPanel = new Ext.Panel({
     plugins: [new MyPlugin({/* objeto de configuração opcional */})]
    ,// restante da configuração do myPanel
});

Extensão ou Plugin?

Depende... Você pode muitas vezes alcançar o mesmo resultado com uma extensão ou um plugin. Às vezes ocorre que um programador gosta mais de plugins, então ele desenvolve um plugin; ou ele gosta mais de extensões, então ele desenvolve uma extensão. De qualquer modo, plugins são mais apropriados para adicionar funcionalidades menores, enquanto extensões são mais apropriadas para adicionar funcionalidades mais complexas. Plugins podem ser facilmente removidos dos componentes; extensões são normalmente mais amarradas às aplicações.

Resumo

  • Uma extensão é uma classe nova com um novo nome, baseada em uma classe base existente e criada na hora de sua definição. Uma extensão deve ser instanciada como qualquer outra classe para funcionar.
  • Um plugin é inserido em uma classe existente, é facilmente removível, é definido durante sua definição, e é iniciado durante a inicialização da classe base.

Leitura adicional

  • This page was last modified on 18 May 2009, at 18:46.
  • This page has been accessed 649 times.