Continuando uma série de posts sobre o ExtJS, vou falar agora sobre uma feature existente em algumas linguagens também, que é o “namespace”.
Pela wikipedia “namespace” é: “In general, a namespace is an abstract container providing context for the items (names, or technical terms, or words) it holds and allowing disambiguation of homonym items having the same name (residing in different namespaces).”
Traduzingo ( mal e porcamente, se puder me ajude! heheh ): “Em geral, um namespace é um recipiente genérico que contextualiza os itens (nomes ou termos técnicos, ou palavras) que contém, permitindo desambiguação de itens homônimos que tem o mesmo nome (que residem em espaços diferentes).”
No ExtJS não é diferente. Como com o Ext acabamos por gerar muitos e muitos componentes, telas, painéis e páginas completas em vários arquivos javascript, nada mais justo que organizar tudo isto separando-os em namespaces. Vejamos alguns exemplos: Digamos nosso usuario_novo.js
Ext.ns("App.NovoUsuario"); //Ext.ns é uma contração para a função Ext.namespace App.NovoUsuario.janela = new Ext.Window({ //... });
E depois nosso usuario_edicao.js
Ext.ns("App.EditarUsuario"); App.EditarUsuario.janela = new Ext.Window({ //... });
Aqui criamos duas Windows ( não coloquei todas as propriedades pois não é o foco ) dentro de dois namespaces diferentes. Conseguimos facilmente contextualizar o que cada objeto criado faz. Isto organiza nosso código e ainda dá um limite de escopo para as variáveis e objetos ali criados.
Outra forma de utilizar o namespace é assim:
var NS = Ext.namespace("App.Modulo"); NS.PainelDeTeste = function(cfg){ NS.PainelDeTeste.superclass.constructor.call ... etc };
E
Ext.ns("App","App.Edicao","App.Criacao"); App.storegenerico = new Ext.data.Store({ //... }); App.Edicao.janela = new Ext.Window({ //... }); App.Criacao.janela = new Ext.Window({ //... });
Ao dar uma olhada na documentação do proprio Ext, temos uma árvore a esquerda e os dados informativos a direita.Esta árvore representa toda a estrutura montada através dos namespaces do core. E também, quando encontrarmos alguns plugins e widgtes criados por usuários, que não estão na distro padrão do Ext, geralmente estes pertencem ao ns Ext.ux, ficando assim padronizados e organizados.
Resumindo, os namespaces dão organização e legibilidade ao nosso código além de definir escopos.
até+
Links:
- http://www.jasonclawson.com/2008/05/28/extjs-using-namespaces-improved/
- http://www.extjs.com/blog/2008/05/28/use-namespaces/
0sem comentários ainda