Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

43
Aprimorando sua Aplicação com Ext JS 4 Loiane Groner http://loiane.com http://loianegroner.com [email protected] BrazilJS

description

Apresentação feita no BrazilJS 2011, 13 de maio de 2011, em Fortaleza - Ceará sobre Ext JS 4

Transcript of Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Page 1: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Aprimorando sua Aplicação com Ext JS 4

Loiane Gronerhttp://loiane.comhttp://[email protected]

BrazilJS

Page 2: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

palestrante = {nome: ‘Loiane Groner’,trabalha: ‘Senior Software Engineer’,onde: ‘@Citibank - São Paulo’,usaExtDesde: 2009,twitter: ‘@loiane’

}

Loiane...

Page 3: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Mãos ao alto!

Conhece JQuery?

Conhece Ext JS?

Já trabalhou com Ext JS?

Page 4: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

http://sencha.com

Page 5: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext JSé

líndio!

Page 6: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

1milhão de desenvolvedores

RIA JS Framework

Melhores componentes UI domercado

Page 7: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Puro HTML/Javascript Com Ext JS

HOT!

Page 8: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
Page 9: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

XMLou

JSON

Page 10: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Tem para

todos

Page 11: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Cross Browser

Não precisa ficar

esquentando a cabeça!

Funciona até no IEca 6!

Page 12: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext 3->

Ext 4

Page 13: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Framework rewritten

Page 14: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Performance++

Page 15: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Faster++

Page 16: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Stable++

Page 17: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

E outros....

Page 18: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Plus:

*New Class System*New Data Package*New Charts*New Theming: CSS3*New Architecture: MVC

Page 19: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

The New Class System

Page 20: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
Page 21: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

// Ext 3:Ext.ns('MyApp'); // required in Ext 3MyApp.CustomerPanel = Ext.extend(Ext.Panel, { // etc.});

// Ext 4Ext.define('MyApp.CustomerPanel', { extend: 'Ext.panel.Panel', // etc.});

Class Definition

Page 22: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext.define('Sample.Musician', { extend: 'Sample.Person',

mixins: { guitar: 'Sample.ability.CanPlayGuitar', compose: 'Sample.ability.CanComposeSongs', sing: 'Sample.ability.CanSing' }});

Mixins

Page 23: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

 Ext.define('Sample.ability.CanPlayGuitar', { playGuitar: function() { //code to play }}); 

Mixin Definition

Page 24: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext.require('Ext.Window', function() { new Ext.Window({ title : 'Loaded Dynamically!', width : 200, height: 100 }).show();});

Dynamic Loading

Page 25: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext.define('Ext.Window', { extend: 'Ext.Panel', requires: " " " " " ['Ext.util.MixedCollection'], mixins: { draggable: 'Ext.util.Draggable' }});

Dynamic Loading Hierarchy

Page 26: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

The New Data Package

Page 27: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
Page 28: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
Page 29: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext.regModel('User', { fields: [ {name: 'id', type: 'int'}, {name: 'name', type: 'string'} ]});

Model Declaration

Page 30: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

new Ext.data.Store({ model: 'User', proxy: { type: 'ajax', url : 'users.json', reader: 'json' }, autoLoad: true});

New Store Declaration

Page 31: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

new Ext.data.Store({ model: 'User',  sorters: ['name', 'id'], filters: { property: 'name', value : 'Loiane' }, groupers: { property : 'age', direction: 'ASC' }}); 

Store Features

Page 32: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext.regModel('User', { fields: ['id', 'name'],  hasMany: 'Posts'}); Ext.regModel('Post', { fields: ['id', 'user_id', 'title', 'body'],  belongsTo: 'User', hasMany: 'Comments'}); Ext.regModel('Comment', { fields: ['id', 'post_id', 'name', 'message'],  belongsTo: 'Post'});

Associations

Page 33: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

//loads User with ID 123 using User's ProxyUser.load(123, { success: function(user) { console.log("User: " + user.get('name'));  user.posts().each(function(post) { console.log("Comments for post: " + post.get('title'));  post.comments().each(function(comment) { console.log(comment.get('message')); }); }); }});

Loading Nested Data

Page 34: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

{ id: 1 name: 'Loiane', posts: [ { id : 12, title: 'New features in Ext JS 4', body : 'Ext JS 4 is the most...', comments: [ { id: 123, name: 'Someone', message: 'Great Post!' } ] } ]}

Nested Data: JSON

Page 35: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Ext.regModel('User', { fields: ['id', 'name', 'email', 'height'],  validations: [ {type: 'presence', field: 'id'}, {type: 'length', field: 'name', min: 2}, {type: 'format', field: 'email', matcher: /[a-z]@[a-z].com/} ]});

Model Validation

Page 36: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Charts

Page 37: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
Page 38: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

MVCArchitecture

Page 39: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Hands On!!!

Page 41: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

Book:Ext JS 4: First Look!!!

Coming: 2011

Page 42: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
Page 43: Aprimorando sua Aplicação com Ext JS 4 - BrazilJS

contato = {email: ‘[email protected]’,blogPtBr: ‘loiane.com’,blogIngles: ‘loianegroner.com’,twitter: ‘@loiane’,github: ‘loiane’,slideshare: ‘loianeg’

}