Palestra Dojo Toolkit Consegi 2011

86

description

Palestra sobre o toolkit open source para Javascript Dojo.

Transcript of Palestra Dojo Toolkit Consegi 2011

Page 1: Palestra Dojo Toolkit Consegi 2011
Page 2: Palestra Dojo Toolkit Consegi 2011

Título daApresentação

00/00/0000Palestrante: Flávio Gomes da Silva Lisboa

Dojo Toolkit:Javascript Acessível

Page 3: Palestra Dojo Toolkit Consegi 2011

Palestrante

Bacharel em Ciência da Computação com pós-graduação em Aplicações Corporativas usando Orientação a Objetos e Tecnologia Java pela Universidade Tecnológica Federal do Paraná. Já atuou como programador em empresas privadas de informática e funcionário de carreira do Banco do Brasil, onde chegou a analista na diretoria internacional. Atualmente é consultor tecnológico da Coordenação Estratégica de Tecnologia do Serviço Federal de Processamento de Dados (Serpro). Foi professor na pós-graduação da UNICID e é instrutor de cursos técnicos na Tempo Real Eventos. Foi membro do time oficial de tradução do Zend Framework e autor de três livros sobre o tema. Tem experiência na área de Ciência da Computação, com ênfase em Software Livre, atuando principalmente nos seguintes temas: Java, PHP, padrões, frameworks, MVC e objetos.

Page 4: Palestra Dojo Toolkit Consegi 2011

O que é o Dojo

Toolkit?

Vamos fazer uma

introdução!

Page 5: Palestra Dojo Toolkit Consegi 2011

O que é o Dojo Toolkit?

Introdução

Page 6: Palestra Dojo Toolkit Consegi 2011

Não é, SÃO ferramentas Javascript Imbatíveis!

O que é o Dojo Toolkit?

Page 7: Palestra Dojo Toolkit Consegi 2011

Totalmente Open Source!

O que é o Dojo Toolkit?

Page 8: Palestra Dojo Toolkit Consegi 2011

Economiza seu tempo!

O que o Dojo Toolkit faz?

X √

Page 9: Palestra Dojo Toolkit Consegi 2011

Proporciona uma performance poderosa!

O que o Dojo Toolkit faz?

The Flash, DC Comics

Page 10: Palestra Dojo Toolkit Consegi 2011

Escala com seu processo de desenvolvimento!

O que o Dojo Toolkit faz?

Page 11: Palestra Dojo Toolkit Consegi 2011

O que o Dojo Toolkit suporta?

Page 12: Palestra Dojo Toolkit Consegi 2011

Quem apoia o Dojo Toolkit?

Page 13: Palestra Dojo Toolkit Consegi 2011

Dojo Toolkit possui APIs básicas poderosas.

O que você pode fazer com Dojo Toolkit?

Tarefas comuns ficam fáceis e rápidas.

Sonic, Sega

Page 14: Palestra Dojo Toolkit Consegi 2011

Você pode animar elementos

O que você pode fazer com Dojo Toolkit?

do documento HTML

sem precisar de Flash!

Bozo, Larry Larman

Page 15: Palestra Dojo Toolkit Consegi 2011

O que você pode fazer com Dojo Toolkit?

Você manipular o DOM,

o Modelo de Objeto do Documento, incluindo, excluindo e alterando elementos HTML de forma dinâmica.

Page 16: Palestra Dojo Toolkit Consegi 2011

O que você pode fazer com Dojo Toolkit?

Você pode consultar com facilidade a sintaxe CSS sem sacrificar a performance do frontend.

Page 17: Palestra Dojo Toolkit Consegi 2011

E tudo isso de forma simples!

"Everything must be made as simple as possible. But not simpler."

Albert

Page 18: Palestra Dojo Toolkit Consegi 2011

Será que faz tudo isso mesmo?

O que você pode fazer com Dojo Toolkit?

The Simpsons, Fox

Page 19: Palestra Dojo Toolkit Consegi 2011

Você pode fazer download...

Existem 3 opções básicas:

►Dojo Toolkit Release: Arquivo comprimido e otimizado, contendo os projetos Dojo, Dijit e DojoX

►Dojo Base: Um único arquivo .js contendo somente as APIs básicas (Ajax, eventos, consulta por CSS, animações, JSON, empacotamento)

►Dojo Toolkit SDK: código-fonte, testes unitários e demonstrações.

Você também pode acessar o repositório Subversion: http://svn.dojotoolkit.org/src/

Instalando Dojo

Page 20: Palestra Dojo Toolkit Consegi 2011

Dojo está na nuvem...

Não precisa instalar nada. Você pode utilizar os serviços do Dojo por meio de provedores:

<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" type="text/javascript"></script>

<script src="http://o.aolcdn.com/dojo/1.6/dojo/dojo.xd.js" type="text/javascript"></script>

<script src="http://yandex.st/dojo/1.6.0/dojo/dojo.xd.js" type="text/javascript"></script>

Instalando Dojo

Page 21: Palestra Dojo Toolkit Consegi 2011

Ao descompactar o Release, você tem três pastas: dijit, dojo e dojox.

Dojo é o módulo básico, que contém o script dojo.js, o núcleo do toolkit.

Dijit é um framework para a interface com o usuário, com componentes visuais prontos para uso.

DojoX é o módulo de extensão com componentes extras, como gráficos, cálculos e validadores.

Estrutura do Dojo

Page 22: Palestra Dojo Toolkit Consegi 2011

Estrutura do Dojo

Os principais objetos do Dojo Toolkit (correspondentes aos módulos) são:

dojo: o objeto básico, com os métodos mais genéricos e frequentemente utilizados.

dijit: o objeto que dá acesso ao framework de interface do usuário construído sobre o Dojo.

dojox: objeto que provê acesso aos projetos adicionais do Dojo Toolkit, incluindo criação de gráficos e grades de dados e API para aplicações mobile.

Page 23: Palestra Dojo Toolkit Consegi 2011

Estrutura do Dojo

Outros objetos de uso comum do Dojo Toolkit são:

dojo.query: o mecanismo seletor de CSS.

dojo.nodeList: armazena o retorno de qualquer chamada com dojo.query.

dijit.form: provê acesso aos elementos de formulário do Dijit.

dijit.layout: provê widgets de layout pra ajudar a desenhar a interface com o usuário.

dojox.charting.Chart: o principal objeto da biblioteca de gráficos.

dojox.grid: provê acesso às classes que constroem grades para apresentação de dados.

Page 24: Palestra Dojo Toolkit Consegi 2011

Alô Mundo

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Alô Mundo em Dojo</title><!-- Esta linha carrega o Dojo --><script src="/js/dojo/dojo.js"></script><!-- Aqui nós mostramos uma mensagem assim que o Dojo é carregado --><script src="helloworld.js"></script></head><body></body></html>

Page 25: Palestra Dojo Toolkit Consegi 2011

Alô Mundo

/** * Quando a estrutura DOM estiver pronta para ser manipulada e o Dojo estiver carregado, * será executada a função anônima passada como argumento para ready(). */dojo.ready(function() {alert("A versão " + dojo.version + " do Dojo está carregada!");});

helloworld.js

Page 26: Palestra Dojo Toolkit Consegi 2011

Alô Mundo

Page 27: Palestra Dojo Toolkit Consegi 2011

Alô Mundo

helloworld.js

/** * Quando a estrutura DOM estiver pronta para ser manipulada e o Dojo estiver carregado, * será executada a função anônima passada como argumento para ready(). */function init () {alert("A versão " + dojo.version + " do Dojo está carregada!");}dojo.ready(init);

Versão 2!

Page 28: Palestra Dojo Toolkit Consegi 2011

Com Dojo Toolkit você usa orientação a objetos para escrever código Javascript. Isso permite gerar código mais reutilizável.

O objeto dojo é a instância básica para manipular as principais APIs do Toolkit.

O método ready() somente é executado depois que a estrutura DOM e o Dojo foi carregado. Isso impede que código Javascript seja executado antes dos elementos afetados por ele estarem disponíveis.

Javascript Orientado a Objetos

<html><head>

</head><body>

</body></html>

Page 29: Palestra Dojo Toolkit Consegi 2011

Com Dojo Toolkit, seu código Javascript não fica espalhado pelo documento HTML, parecendo ervilha no macarrão.

Javascript só no cabeçalho

<html><head>

</head><body>

</body></html>

Page 30: Palestra Dojo Toolkit Consegi 2011

Embora você possa jogar o código Javascript do cabeçalho em um arquivo .js, ainda ficam trechos de Javascript nos atributos de comportamento dos elementos HTML.

Javascript só no cabeçalho

<html><head>

</head><body>

</body></html>

<input onblur=""><input onchange=""><input onclick=""><input ondblclick=""><input onfocus=""><input onhelp=""><input onkeydown=""><input onkeypress=""><input onkeyup=""><input onmousedown=""><input onmouseout=""><input onmouseover=""><input onmouseup=""><input onselect="">

Page 31: Palestra Dojo Toolkit Consegi 2011

Dojo permite ao programador centralizar todo código Javascript no cabeçalho (head) do arquivo HTML.

Javascript só no cabeçalho

<html><head>JAVASCRIPT</head><body>JAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPT</body></html>

<html><head>JAVASCRIPT</head><body>

</body></html>

Dojo Toolkit

Page 32: Palestra Dojo Toolkit Consegi 2011

O corpo do documento fica só com a apresentação dos elementos visuais, enquanto o comportamento deles fica centralizado no cabeçalho.

Javascript só no cabeçalho

<html><head>JAVASCRIPT</head><body>JAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPT</body></html>

<html><head>JAVASCRIPT</head><body>

</body></html>

Dojo Toolkit

Page 33: Palestra Dojo Toolkit Consegi 2011

Isso permite conhecer todo o comportamento em uma página HTML apenas pelo cabeçalho (ou pelo arquivos importados nele).

Javascript só no cabeçalho

<html><head>JAVASCRIPT</head><body>JAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPTJAVASCRIPT</body></html>

<html><head>JAVASCRIPT</head><body>

</body></html>

Dojo Toolkit

Page 34: Palestra Dojo Toolkit Consegi 2011

Javascript só no cabeçalho

<button id="movefirst" onclick="moveFirst();">Três primeiro</button><button id="movebeforetwo" onclick="moveBeforeTwo();">Três antes do dois</button><button id="moveaftertwo" onclick="moveAfterFour();">Três depois do quatro</button><button id="movelast" onclick="moveLast();">Três por último</button></body>

dojo.ready(function() { dojo.connect(dojo.byId("movefirst"), "onclick", moveFirst); dojo.connect(dojo.byId("movebeforetwo"), "onclick", moveBeforeTwo); dojo.connect(dojo.byId("moveafterfour"), "onclick", moveAfterFour); dojo.connect(dojo.byId("movelast"), "onclick", moveLast);});

Do arquivo HTML...Do arquivo HTML... … para o arquivo Javascript!

Page 35: Palestra Dojo Toolkit Consegi 2011

E para que serve isso?

No advertisementNo

advertisement

Page 36: Palestra Dojo Toolkit Consegi 2011

Frontend

Frontend em Camadas

CSS

HTML

Javascript

O que vai aparecer

Como vai aparecer

Como vai se comportar

WH2 (What How How)

Backend

Page 37: Palestra Dojo Toolkit Consegi 2011

Frontend em Camadas

Cada um no seu quadrado!

HTML, HTML!

Javascript, Javascript!

HTML, HTML!

CSS, CSS!

Page 38: Palestra Dojo Toolkit Consegi 2011

Frontend em Camadas

Divida o trabalho!

Page 39: Palestra Dojo Toolkit Consegi 2011

Objeto dojo

Page 40: Palestra Dojo Toolkit Consegi 2011

DOM

Page 41: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

Exercício: Acrescentar itens a uma lista não-ordenada com formatação.

●Um

●Dois

●Um foi configurado

●Dois foi configurado também

●dois e meio

●três

●quatro

Page 42: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

Só com Javascript, temos de “contaminar” o documento com os nomes das funções.

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Exemplo com DOM</title><script type="text/javascript" src="dom01semdojo.js"></script></head><body onLoad="config()"><ul id="list"> <li id="um">Um</li> <li id="dois">Um</li> </ul> </body></html>

SEM DOJO

Page 43: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

SEM DOJO

function setText(node, text) {node.innerHTML = text;}

function config(){var one = document.getElementById('um');

setText(one, "Um foi configurado");setText(document.getElementById('dois'), "Dois foi configurado também");

var list = document.getElementById('list'), two = document.getElementById('dois');

var newChild3 = document.createElement("li");newChild3.innerHTML = "três";list.appendChild(newChild3);

var newChild4 = document.createElement("li");newChild4.innerHTML = "quatro";newChild4.setAttribute("class", "quatro");newChild4.setAttribute("style", "font-weight:bold");list.appendChild(newChild4);

newChild = document.createElement("li");newChild.innerHTML = "dois e meio";list.insertBefore(newChild,newChild3);

}

Page 44: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

Com Dojo, as funções Javascript ficam só no bloco do Javascript!

COM DOJO

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Exemplo com DOM</title><!-- Esta linha carrega o Dojo --><script type="text/javascript" src="/js/dojo/dojo.js"></script><script type="text/javascript" src="dom01.js"></script></head><body><ul id="list"> <li id="um">Um</li> <li id="dois">Um</li> </ul> </body></html>

Page 45: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

COM DOJO

function setText(node, text) {node = dojo.byId(node);node.innerHTML = text;}

dojo.ready(function() {var one = dojo.byId("um");

setText(one, "Um foi configurado");setText("dois", "Dois foi configurado também");

var list = dojo.byId("list"), two = dojo.byId("dois");

dojo.create("li", {innerHTML : "três"}, list);

dojo.create("li", {innerHTML : "quatro",className : "quatro",style : {fontWeight : "bold"}}, list);

dojo.create("li", {innerHTML : "dois e meio"}, two,"after");});

Flexibilidade

Integração

Alternativas

Page 46: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

var newChild4 = document.createElement("li");newChild4.innerHTML = "quatro";newChild4.setAttribute("class", "quatro");newChild4.setAttribute("style", "font-weight:bold");list.appendChild(newChild4);

dojo.create("li", { innerHTML : "quatro", className : "quatro", style : { fontWeight : "bold"} },list);

3 objetos solicitantes5 métodos5 instruções1 variável criada

1 objeto solicitante1 método1 instruçãoNenhuma variável

Page 47: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

Mais simples e objetivo

function moveAfterFour() { var list = document.getElementById("list"); var four = document.getElementById("quatro"), three = document.getElementById("tres");

list.removeChild(three); var five = four.nextSibling; list.insertBefore(three, five);

}

function moveAfterFour() { var four = dojo.byId("quatro"), three = dojo.byId("tres");

dojo.place(three, four, "after");

}

Page 48: Palestra Dojo Toolkit Consegi 2011

Manipulação de DOM

function destroyAll() { var list = document.getElementById("list"), items = list.getElementsByTagName("li"); for ( var i = items.length - 1; i >= 0; i--) { list.removeChild(items[i]); }

}

function destroyAll(){ dojo.empty("list");}

Direto ao ponto!

By Jon Wilcox

Page 49: Palestra Dojo Toolkit Consegi 2011

Consultas por CSS

Page 50: Palestra Dojo Toolkit Consegi 2011

Consultas por CSS

Mas como recuperar vários elementos de diferentes tags?

getElementById() retorna sempre 1

getElementByTagName() retorna todos os elementos de uma tag

id=”omac”

<a></a><p></p><div></div>

Nada que alguns braços a

mais não resolvam!

Doctor Octopus, created by Stan Lee and Steve Ditko. Marvel, All rights reserved.

Page 51: Palestra Dojo Toolkit Consegi 2011

Consultas por CSS

<ul id="list"><li class="odd"><div class="bold"><a class="odd">Ímpar</a></div></li><li class="even"><div class="italic"><a class="even">Par</a></div></li><li class="odd"><a class="odd">Ímpar</a></li><li class="even"><div class="bold"><a class="even">Par</a></div></li><li class="odd"><div class="italic"><a class="odd">Ímpar</a></div></li><li class="even"><a class="even">Par</a></li></ul>

<li>

<li>

<a>

<a>

hasChildNodes()childNodes

for(){}

getAttribute()

Dexter, by Genndy Tartakovsky

Page 52: Palestra Dojo Toolkit Consegi 2011

Consultas por CSS

farofadeovo.com.br

GAMBIARRA?

Page 53: Palestra Dojo Toolkit Consegi 2011

Consultas por CSS

<ul id="list"><li class="odd"><div class="bold"><a class="odd">Ímpar</a></div></li><li class="even"><div class="italic"><a class="even">Par</a></div></li><li class="odd"><a class="odd">Ímpar</a></li><li class="even"><div class="bold"><a class="even">Par</a></div></li><li class="odd"><div class="italic"><a class="odd">Ímpar</a></div></li><li class="even"><a class="even">Par</a></li></ul>

var odds = dojo.query(".odd");var evens = dojo.query(".even");

DIGO-TE NÃO!

By Jack Kirby

Page 54: Palestra Dojo Toolkit Consegi 2011

Consultas por CSS

Você pode consultar elementos pelo atributo id

dojo.query("#list3");

Você pode consultar elementos pelo atributo classodds = dojo.query(".odd");

dojo.query("#list .odd");

Você pode consultar pela intersecção dos atributos id e class

dojo.query(".odd", dojo.byId("list"));

dojo.query("li a")

dojo.query("li > a");

Você pode consultar tags que tenham um ancestral

Você pode consultar tags que tenham um ancestral direto

Page 55: Palestra Dojo Toolkit Consegi 2011

Alteração dinâmica de CSS

Dojo permite alterar os estilos dinamicamente...

Page 56: Palestra Dojo Toolkit Consegi 2011

Alteração dinâmica de CSS

Dojo permite alterar os estilos dinamicamente...

Page 57: Palestra Dojo Toolkit Consegi 2011

Alteração dinâmica de CSS

Você pode efetuar operações sobre uma lista de nós

dojo.addClass("batman");

Você pode alterar a classe CSS de um nó

Você pode remover e adicionar classes de uma lista de nós

Você pode trocar os estilos de uma lista de nós

dojo.query(".even").forEach(function(node, index, nodelist) { node.innerHTML = node.innerHTML + index;});

dojo.query(".even").removeClass('italic').addClass('batman');

dojo.query(".even").style('color','brown');var style = { font: "Verdana", color:"yellow", backgroundColor:"red" };dojo.query(".odd").forEach(function(node,index,nodeList){ dojo.style(node,style);});

Page 58: Palestra Dojo Toolkit Consegi 2011

Controle de eventos

Page 59: Palestra Dojo Toolkit Consegi 2011

Controle de eventos

Potência não é nada sem controle!

FATO: DOM provê um mecanismo para registrar manipuladores de eventos.

OUTRO FATO: Nem todos os browsers seguem as especificações DOM;

OUTRO FATO: Entre as implementações dos maiores browsers, há três modos de registrar manipuladores de evento e para cada um deles duas implementações diferentes de objetos de evento.

Dojo Toolkit provê uma API única para registrar (e remover o registro) de manipuladores de evento. E ISSO TAMBÉM É UM FATO!

Stephen Lang in Avatar (2009)

Page 60: Palestra Dojo Toolkit Consegi 2011

Controle de eventos

Você pode criar manipuladores de evento e conectá-los a elementos DOM.

var messageHandler = { id : "messageHandler", onClick : function() { window.alert("Você está vendo uma mensagem!"); }};

var handle;

dojo.ready(function() { dojo.connect(dojo.byId("ativar"), "onclick", function() { handle = dojo.connect(dojo.byId("exibir"), "onclick",messageHandler.onClick); });

Page 61: Palestra Dojo Toolkit Consegi 2011

Controle de eventos

Você pode desconectar eventos de elementos a qualquer momento

dojo.connect(dojo.byId("desativar"), "onclick", function() { dojo.disconnect(handle);

});

dojo.connect(dojo.byId("ativar"), "onclick", function() { handle = dojo.query(".mensagem").connect("onclick",messageHandler.onClick);});

Você pode conectar manipuladores eventos a uma lista de nós

Page 62: Palestra Dojo Toolkit Consegi 2011

Controle de eventos

Você pode registrar rotinas para serem ativadas por qualquer evento, com passagem de parâmetros

dojo.connect(dojo.byId("mensagem1"), "onclick", function() { dojo.publish("rotinaDeMensagem", [ "Um elefante incomoda muita gente", 1 ]);});dojo.connect(dojo.byId("mensagem2"), "onclick", function() { dojo.publish("rotinaDeMensagem", [ "Dois elefantes incomodam muita gente", 2 ]);});dojo.connect(dojo.byId("mensagem3"), "onclick", function() { dojo.publish("rotinaDeMensagem", [ "Três elefantes incomodam muita gente", 3 ]);});dojo.connect(dojo.byId("mensagem4"), "onclick", function() { dojo.publish("rotinaDeMensagem", [ "Quatro elefantes incomodam muita gente", 4 ]);});

dojo.subscribe("rotinaDeMensagem", function(text, loops) { for ( var int = 0; int < loops; int++) { window.alert(text); }});

Page 63: Palestra Dojo Toolkit Consegi 2011

Efeitos e Animações

DreamworksSony Pictures

Village Roadshow Pictures

Page 64: Palestra Dojo Toolkit Consegi 2011

Efeitos e Animações

Dojo permite implementar vários efeitos visuais, como fading, wiping e sliding.

FADING FADING FADING FADING FADING

WIPING WIPING WIPING WIPING WIPING

SLIDINGSLIDING

SLIDINGSLIDING

SLIDINGSLIDING

SLIDINGSLIDING

O método slideTo() de dojo.fx permite configurar a posição inicial do elemento antes do deslocamento, por meio do atributo beforeBegin.

Page 65: Palestra Dojo Toolkit Consegi 2011

Efeitos e Animações

Os efeitos sempre retornam um objeto dojo.Animation. O evento onEnd desse objeto pode ser conectado a uma função, alterando a formatação de um elemento.

animation

animationanimation

SLIPINGSLIPING TO LEFTTO LEFT

Page 66: Palestra Dojo Toolkit Consegi 2011

Efeitos e Animações

Você pode encadear vários efeitos com o método chain() de dojo.fx, criando uma animação.

Page 67: Palestra Dojo Toolkit Consegi 2011

Efeitos e Animações

O método combine() de dojo.fx permite executar efeitos simultaneamente.

FADING SLIDINGFADING SLIDING

FADING SLIDING

FADING SLIDINGFADING SLIDING

FADING SLIDINGFADING SLIDING

FADING SLIDINGFADING SLIDING

FADING WIPING SLIPING

Page 68: Palestra Dojo Toolkit Consegi 2011

Efeitos e Animações

Você pode animar propriedades de um elemento, individualmente, com o método animateProperty() do objeto dojo.

FADING WIPING SLIPING

Page 69: Palestra Dojo Toolkit Consegi 2011

E ainda tem mais

Você pode configurar a duração de um efeito em milissegundos, especificando os valores iniciais e finais de cada propriedade.

var anim8target = dojo.byId("anim8target");dojo.animateProperty({ node: anim8target, properties: { top: { start: 25, end: 150 }, borderWidth: { start: 0, end: 10}, left: 0, opacity: { start: 1, end: 0 } }, duration: 800 }).play();

Page 70: Palestra Dojo Toolkit Consegi 2011

Dojo Toolkit

Page 71: Palestra Dojo Toolkit Consegi 2011

Dojo Toolkit

Thor, art by Walter Simonson

Page 72: Palestra Dojo Toolkit Consegi 2011

Arrays

Dojo provê métodos auxiliares para arrays que funcionam independente do ambiente e tornam mais fácil manipular arrays.

dojo.indexOf(array,index);

dojo.forEach(array, function(item, index) {});

dojo.every(array, function(item){ return comparison; });

dojo.some(array, function(item){ return comparison; });

Page 73: Palestra Dojo Toolkit Consegi 2011

Ajax

http://www.w3schools.com/ajax/ajax_intro.asp

Page 74: Palestra Dojo Toolkit Consegi 2011

Ajax

Esqueça isto:

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

Page 75: Palestra Dojo Toolkit Consegi 2011

Ajax

xmlhttp.open("GET","ajax_info.txt",true);

xmlhttp.send();

Envio da requisição

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

}

}

Recepção do resultado

Page 76: Palestra Dojo Toolkit Consegi 2011

Ajax

Use isto:

// O método "xhrGet" executando uma requisição HTTP GETdojo.xhrGet({ // URL requisitada url: "mensagem.com.br/futuro", // Método que manipula o resultado da requisição // Manipule a resposta como você quiser load: function(result) { alert("O futuro é este: " + result); }});

Page 77: Palestra Dojo Toolkit Consegi 2011

Ajax

Argumentos de xhrget():

timeout: tempo de resposta em milissegundos

content: argumentos na forma nome:valor

handleAs: como manipular a resposta, text, json, javascript e xml.

error: função a ser executada em caso de erro

Page 78: Palestra Dojo Toolkit Consegi 2011

Ajax

Submissão de formulários com xhrpost():

Similar a xhrget()

form: nó DOM do formulários

Page 79: Palestra Dojo Toolkit Consegi 2011

Gráficos

Construção de gráficos

Page 80: Palestra Dojo Toolkit Consegi 2011

Gráficos

Construção de gráficos

Page 81: Palestra Dojo Toolkit Consegi 2011

Gráficos

Gráficos podem ser animados

Page 82: Palestra Dojo Toolkit Consegi 2011

RIA

Componentes visuais prontos com Dijit

Page 83: Palestra Dojo Toolkit Consegi 2011

RIA

Grid de dados com DojoX

Page 84: Palestra Dojo Toolkit Consegi 2011

HTML 5

Versão 1.6: novo carregador de múltiplos arquivos

Page 85: Palestra Dojo Toolkit Consegi 2011

E tem mais ainda...

Podemos ficar aqui até a

noite!

Page 86: Palestra Dojo Toolkit Consegi 2011

Por isso...

Contato: [email protected]

Referência: http://dojotoolkit.org/documentation