Sorry, this entry is only available in Português.
Demorei um pouco pra ter um contato significativo com essa nova versão por causa de várias tarefas, mas agora que estou neste ponto, acho útil compartilhar experiências com a comunidade. Este post é dedicado a todos que, assim como eu, estão passando pela transição Ext 3 – 4, e precisam ficar procurando na documentação, nos fóruns e na web como um todo, por material de estudo e explicações para problemas simples.
Para ficar bem elucidado, vou criar uma aplicação simples de Blog. O sistema final deve ser parecido com o rascunho abaixo. Ele é composto de um painel para ler posts, e um menu lateral com recursos adicionais. Ao clicar em um post ele ganhará destaque, e links para edição e remoção serão mostrados. Ao clicar duas vezes uma nova aba será aberta. Na lateral poderemos filtrar por categoria ou data, e ainda teremos a opção de criar um novo post, o que abrirá uma nova janela. Apesar de ser um sistema básico, consigo através dele abordar os componentes mais usados.
Set Up
1. Criar a estrutura de diretórios conforme especificado na documentação oficial
O diretório principal recebe o nome que você desejar (algo relacionado a sua aplicação obviamente). No meu caso vou chamar de extblog, por esse projeto se tratar de um blog escrito em Ext. O diretório extblog/app, e seus subdiretórios controller, model, store e view são padrões do Ext. Temos ainda o diretório extblog/ext-4.0, com os fontes do Ext (não todos! Eu por enquanto estou copiando só o ext.js, ext-dev.js, e os subdiretórios src e resources). E por fim o diretório extblog/resources aonde colocamos arquivos estáticos como imagens e SASS
2. Criar os arquivos de entrada index.html e app.js
O nosso arquivo index.html não tem muito segredo. Ele vai ser o mais simples possível, contendo somente a inclusão do arquivo CSS do Ext, o próprio JS do Ext, e um arquivo chamado app.js.
<html>
<head>
<title>ExtBlog</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="stylesheet" type="text/css" href="ext-4.0/resources/css/ext-all.css">
<script type="text/javascript" src="ext-4.0/ext-dev.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>
app.js é uma novidade da versão 4. Ele é o arquivo de entrada padrão, contendo dados a respeito da inicialização da sua aplicação. Nele você informa o namespace da sua aplicação, e também quais os controllers existentes. Por enquanto só vou ter o namespace.
Ext.Loader.setPath('Ext', 'ext-4.0/src');
Ext.Loader.setConfig({enabled: true});
Ext.application({
name: 'EB', //app namespace (from ExtBlog)
controllers: [] //here goes the controllers
});
Fazendo essa definição inicial já é possível acessar o aplicativo e verificar pelo firebug que tudo está sendo carregado corretamente.
Como estamos utilizando a versão de desenvolvimento do Ext (ext-dev.js), é importante dizer aonde os arquivos se encontram, e também ativar o carregamento dinâmico. Isso ocorre nas 2 primeiras linhas, usando Ext.Loader
O sistema de carregamento dinâmico permite que somente as classes que realmente estão sendo utilizadas pela nossa aplicação sejam usadas. Quando chegarmos no processo de deploy, iremos utilizar a ferramenta Sencha SDK para concatenar e compactar todos arquivos em um único. Por causa desse carregamento dinâmico é temos alguns outros arquivos JS que não incluímos no HTML sendo carregados.
Viewport
Agora que temos o nosso projeto rodando, podemos começar a desenvolver a interface, criando o Viewport. Ext.Application possui uma configuração autoCreateViewport. Quando true, o Ext procura o arquivo Viewport.js e já o instancia. Então o que faremos é adicionar essa configuração em app.js e criar o arquivo app/view/Viewport.js.
Ext.define('EB.view.Viewport', {
extend: 'Ext.container.Viewport',
layout: 'border',
padding: 5,
items: [{
xtype: 'container',
html: 'ExtBlog by Bruno Tavares',
region: 'north',
height:40
},{
xtype: 'tabpanel',
region: 'center',
items: [{
title: 'Posts',
html: '...here goes the posts...'
},{
title: 'Post 1',
html: '...post 1...'
}]
},{
xtype: 'panel',
region: 'east',
html: '...here goes additional resources...',
split: true,
width: 400
}]
});
Nessa primeira classe já é possível visualizar a nova sintaxe do Ext 4; a classe é definida por Ext.define.
Se você seguiu tudo certinho até aqui, ao tentar visualizar o viewport no navegador, pode perceber algumas mensagens de aviso como estas:
Por causa do carregamento dinâmico, devemos informar quais as classes que nossas interfaces fazem uso. Não se preocupe se você esquecer alguma dependência enquanto desenvolve, ou não souber delas. O Ext vai carregar ela de forma síncrona e emitir este aviso no console de depuração. Para isso seu navegador deve possuir este recurso (sugiro firefox + firebug), e você deve estar utilizando a versão -dev.js do Ext.
Para resolver com isto, basta ir adicionando os requisitos em app.js
Ext.Loader.setPath('Ext', 'ext-4.0/src');
Ext.Loader.setConfig({enabled: true});
Ext.require(
'Ext.layout.container.Border',
'Ext.tab.Panel'
);
Ext.application({
name: 'EB', //app namespace (from ExtBlog)
models: [], //here goes the models
controllers: [], //here goes the controllers
autoCreateViewport: true //automatically creates Viewport
});
No próximo post
No próximo post (Construindo um aplicativo com Ext 4 – Parte 2) vamos criar nossos models, view e controllers. Ficamos por aqui com o setup básico de um projeto em Ext 4, já conseguindo visualizar a estrutura básica do sistema. Segue também link para download dos fontes e exemplo online. Até em breve!




Muito bom. Bem detalhado e explicado. Parabéns!
Amigo Bruno!
Muito obrigado pela iniciativa em explicar como devemos iniciar o desenvolvimento com esta nova versão.
Eu mesmo tentei iniciar do ZERO e não tive sucesso e acredito que a causa foi a falta do arquivo app.js e a própria estrutura de diretórios.
Pelo pouco que entendi, temos o SDK Tools para auxiliar na criação da estrutura para início no desenvolvimento, então eu lhe pergunto:
1º) Você o utilizou ?
2º) Se eu não quiser o ext-all-debug.js posso utilizar o ext-all.js e com isso não ter a necessidade de incluir os pluins adicionais ?
Novamente obrigado e continuarei acompanhando este artigo.
Olá Dennys! Eu já usei o SDK, mas só pra fazer o deploy da aplicação, não para iniciar ela. Pelo que encontrei no manual, hoje o SDK tem uma funcionalidade que lê os arquivos do seu aplicativo e gera 1 único arquivo JS.
Então você não precisa incluir o framework inteiro. Você vai desenvolvendo em modo de “carregamento dinâmico”, e no final você usa o SDK para gerar 1 arquivo JS com todos os fontes do Ext que sua aplicação realmente usa. No final eu vou mostrar como faz.
Abs!
Bruno!
Eu acredito que outra iniciativa muito importante é mostrar como utilizar o Ext Designer, pois o vídeo de apresentação é muito pobre e não é focado na didática e como você possui vasta experiência com a linha Ext seria de grande ajuda até mesmo para justificar a compra deste produto.
Obrigado.
Então Dennys, sinceramente eu nunca tive muito interesse no produto. Eu acho ele muito limitado somente aos componentes do Ext. O Javascript é muito flexível, e tendo o Ext em mãos eu consigo criar diversos componentes personalizados e classes especializadas para minhas aplicações. O Designer não suporta isso.
O Designer é bom pra quem não vai “fugir” do que o Ext dispõe. Textfields, forms, panels, numberfields, grids… tudo isso está OK! Mas se você de repente precisa de um campo monetário, ou quem sabe um grid aonde as colunas são geradas por metadados, você já começa a se complicar usando o Designer. Por isso não tenho muito contato com o produto, porque simplesmente não uso! (:
Abs!
Muito obrigado pelo post, começando do começo, explicando direitinho… excelente!
Aproveito a oportunidade para divulgar aqui minha integração Ext.Direct com PHP… graças a Deus, não foi preciso alterar nada para mantê-la compatível com ExtJS 4, uma vez que a especificação do Ext.Direct não foi alterada:
Integração do ExtJS com PHP extremamente fácil com Ext.Direct
Bruno novamente vc com sues posts bem detalhados. Vou acompanhar este, pois ainda não fiz nenhum teste com o MVC do ExtJS4.
Novamente meus parabéns.
Bruno,
Parabéns pela didática do artigo!
Estarei aguardando ansiosamente a continuidade dele.
[]´s
Olá Bruno,
Primeiramente parabéns pelo post e pelo seu site.
Já tive alguns contatos com o extJs (versões anteriores) e com o extGWT. Após uma longa pesquisa de frameworks em geral eu resolvi criar o meu prórprio com PHP, e adotar o extjs como parte de meu framework. Com essa nova versão fiquei mais a vontade em utiliza-lo. Acompanharei os seus posts aqui e caso eu tenha algo para contribuir para a comunidade com certeza este será o meu canal.
Aguardo pela continuação deste post.
Abraços
Oda
Analista de sistemas
Desenvolvedor Pleno Java/PHP
Legal heim ! Ótimo post ..
Gosto muito do Ext.
Quando sai o proximo post ?
Abraço..
Boa tarde!
Gostaria que você continuasse a sequencia, pois tem muita gente querendo aprender!
Obrigado!
Maravilhoso… muito bom e simples…
Estou ansioso pela sequencia…
Parabéns!!!
Quando sai a parte 2 ??
Parabéns pelo site !
Bom início, estou ancioso para acompanhar.
Estou tentando iniciar um projeto para administrar um site, desde a autenticação, espero inicia-lo com este padrão MVC.
Muito bom mesmo, esclarescedor em como utilizar o layout e containers com o padrão MVC… e a segunda parte ? ansioso pra ver.
Parabens! Com ctz irei recomendar e acompanhas seus posts!
Legal! O Dinamic Loading é automático, ou tem que passar algum parâmetro?
[...] post anterior iniciamos a estrutura da nossa aplicação de blog. Agora vamos ver melhor a respeito da [...]
gostaria de ajuda para instalação ext js 4, fico muito agradecido.
email/msn: pioedisp@hotmail.com
Caraca Mano que post bem Feito e muito bem detalhado!!!
Parabéns se a internet tivesse Posts assim bem detalhados o mundo seria bem melhor!!!
Parabéns!!!
Valeu Felipe!