ExtJS, RIA e um pouco de filosofia

Olá pessoal, tudo certo?
Hoje escreverei sobre ExtJS, mas não como programação, mas sim boas práticas. Na verdade, sugiro um momento de filosofia para debatermos algumas boas práticas para construção de uma aplicação RIA com ExtJS.

Contexto

Faço parte da equipe de desenvolvimento de interfaces da empresa onde trabalho e atualmente estou lendo/pesquisando sobre aplicações RIA, principalmente conceitos de design e usabilidade, ou seja, aprendendo a criar interfaces ricas, fluídas e práticas.

Um artigo que eu achei muito interessante é este da UX Magazine. Ele traz ideias de como criar uma boa interface visando algumas técnicas como: estrutura da aplicação, design da tela, controles UI. Lembro que uma aplicação RIA não é simplesmente aquela que possui muitos controles interativos e um monte de javascript, mas sim aquela que é desenhada com uma grande usabilidade para o usuário final (e claro, isso inclui controles interativos e javascript :)). Um ponto do artigo à ser destacado (onde eu acho que teremos um debate) é o, como citado pelo autor, “one page per goal”, literalmente, um objetivo por página ou uma página por objetivo. Neste conceito temos a ideia de levar o usuário à uma página onde este possa chegar ao seu objetivo de forma simples, ou seja, se eu quero ver a listagem de alguma coisa a minha página exibe a listagem como conteúdo principal. Também podemos realçar que, sempre que um usuário entra em uma listagem, ele pode querer cadastrar um novo item para esta, entra então um botão para cadastro. Se seguirmos a ideia de “one page per goal”, deveríamos voltar aos tempos antigos da web e fazer um refresh de página em página, o que “fere” (ao meu ver!) um outro princípio, o de reagir imediatamente. E onde entra o ExtJS? Vamos falar dele agora.

O uso de ExtJS

Com o uso de ExtJS para criar aplicações web, você pode entrar com o conceito de SPA e ter todas as ações momentâneas e diretas, porém você fere o conceito de “one page per goal”, porque agora você possui uma página para vários objetivos. Outro ponto a ser realçado com este conceito é que se sua aplicação for muito grande, você pode enfrentar problemas de memória, e aplicações grandes hoje em dia não são tão incomuns.

Trazendo o contexto para algo mais atual, a nova versão do ExtJS (ExtJS 4) trouxe grandes melhorias para o uso de MVC e carregamento dinâmico que auxiliaram muito com problemas de memória do formato SPA, porém, podem levar à algumas requisições durante o tempo de vida da aplicação para buscar os arquivos dinamicamente e isso é e não é problema (ao meu ver). O novo formato de gerência de aplicação (Ext.application) é incrível, em um único ponto você controla o fluxo da sua aplicação e através desta classe eu acredito que exista uma forma de criar uma aplicação RIA com ExtJS.

Vimos que o padrão SPA é muito bom, porém pode ter problemas relacionados à memória, assim como vimos que para cada ação do usuário ficar recarregando a página é completamente inviável. A minha sugestão é então modularizar a aplicação em “mini-SPAs”, em outras palavreas, separar ações por conjuntos próximos (ações) e objetivos. Vamos à um exemplo.

Imagine que a sua aplicação possui dois cadastros com o formato CRUD (produtos e usuários). Você poderia criar uma SPA para um destes CRUDs, o usuário acessa a página de produtos e lá está a listagem de produtos e todas as ações de produtos (excluir, listar, editar, cadastrar) são diretas, não possuem um refresh da página, e a sua aplicação mantém o contexto para as ações do usuário na página e se o usuário mudar para o CRUD de produtos, então você atualiza a página, pois o usuário está alterando de contexto, assim permitindo à você criar páginas no conceito de “one page per goal” e sem problemas de memória e mantendo o usuário ativo (sem refresh) quanto à ações remetentes à página.

O uso de Ext.application seria para a separação de cada um destes módulo. Seria algo como:


// CRUD de produtos

Ext.application({

name: "MeuSistemaProdutos"

});

// CRUD de usuários

Ext.application({

name: "MeuSistemaUsuarios"

});

Eu acredito que esta seja uma boa forma para criar aplicações com a atual versão do ExtJS 4, você consegue criar uma aplicação fluída de uma forma prática, simplesmente modularizando algumas partes.

Contribua

E você, o que você acha desta implementação para interfaces com ExtJS? Ou até mesmo como você acha que deveriam ser as interfaces de sistemas para web?
Abraço.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s