Desenvolvendo com Dojo Toolkit

41

description

Palestra proferida no 6º SOLISC, em São José, SC.

Transcript of Desenvolvendo com Dojo Toolkit

Page 1: Desenvolvendo com Dojo Toolkit
Page 2: Desenvolvendo com Dojo Toolkit

Desenvolvendo com Dojo Toolkit

Palestrante: Flávio Gomes da Silva Lisboa

Page 3: Desenvolvendo com Dojo Toolkit

Desenvolvendo com Dojo Toolkit

Agenda

▶Situando-se no contexto Javascript▶Apresentação ampla do Dojo Toolkit▶Introdução a programação com alguns exemplos

Desenvolvendo com Dojo Toolkit

Page 4: Desenvolvendo com Dojo Toolkit

Brevíssima Introdução ao Javascript

Desenvolvendo com Dojo Toolkit

Page 5: Desenvolvendo com Dojo Toolkit

Javascript

Desenvolvendo com Dojo Toolkit

Page 6: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

Javascript

Page 7: Desenvolvendo com Dojo Toolkit

Javascript

Desenvolvendo com Dojo Toolkit

Page 8: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

Javascript

Page 9: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

<script type="text/javascript"></script>

Page 10: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

Javascript é A linguagem de scripting da Web.

É utilizada em bilhões de páginas Web para adicionar funcionalidades, validar formulários, estabelecer comunicação com o servidor e muitas outras coisas.

Page 11: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

Graças ao Javascript, as páginas HTML puderam ganhar um comportamento que ia além do redirecionamento baseado em hyperlinks. Era possível responder a eventos provocados pelo usuário, sem a necessidade de enviar uma requisição ao servidor.

v

Page 12: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

Javascript é baseada em uma especificação aberta (ECMA-262). Embora outras linguagens tenham surgido, ela se firmou como padrão de scripting para cliente Web.

Page 13: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

FATO. Existe muito código Javascript disponível.

Page 14: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

É fácil copiar e colar.E também é muito fácil perder o controle sobre o código.

Page 15: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

INÍCIO COPIOU COLOU

FUNCIONOU? BELEZA!

FERROU!

SIM

NÃO

POTE:PROGRAMAÇÃOORIENTADA A TENTATIVA

TENTA DE NOVO!

Page 16: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

Quando você perde o controle sobre o código, você perde tempo. E quando você perde tempo certamente não ganha dinheiro.

Page 17: Desenvolvendo com Dojo Toolkit

Programação Orientada a Aspectos em PHP

JAVASCRIPT

E onde entra o Dojo Toolkit?

O que é e por que deveríamos usá-lo?

Page 18: Desenvolvendo com Dojo Toolkit

O que é?

Page 19: Desenvolvendo com Dojo Toolkit

O que é Dojo Toolkit?● É uma “caixa de ferramentas” livre e aberta para

DHTML escrita em Javascript.

● Ou seja, é um conjunto de bibliotecas Javascript.● Pretende resolver problemas históricos com DHTML.

● Como a incompatibilidade entre browsers.● Permite que você atribua capacidades dinâmicas em

páginas Web facilmente.

● Widgets● Animações

Page 20: Desenvolvendo com Dojo Toolkit

Por que Dojo Toolkit?● Você pode usar Dojo para tornar suas aplicações Web

mais usáveis, responsivas e funcionais.

● Ele suporta AJAX.● Dojo provê muitas facilidades

● Ele esconde o processamento de XMLHttpRequest● Ele manipula as incompatibilidades entre browsers

● Dojo tem uma comunidade de desenvolvedores forte

Page 21: Desenvolvendo com Dojo Toolkit

Arquitetura

Page 22: Desenvolvendo com Dojo Toolkit

Bibliotecas Dojo Toolkit

core

base

dijit dojoxSeus

widgets

util

Page 23: Desenvolvendo com Dojo Toolkit

Dojo Base

<html><head><title>Hello, Dojo</title><!-- load Dojo from [webroot]/js: --><script type="text/javascript" src="/js/dojo/dojo.js"></script></head><body></body></html>

Page 24: Desenvolvendo com Dojo Toolkit

Dojo Base

<html><head><title>Hello, Dojo</title><!-- load Dojo from Google --><script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js" type="text/javascript"></script></head><body></body></html>

Page 25: Desenvolvendo com Dojo Toolkit

Dojo Base

<html><head><title>Hello, Dojo</title><!-- load Dojo from Yandex --><script src="http://yandex.st/dojo/1.6.1/dojo/dojo.xd.js" type="text/javascript"></script></head><body></body></html>

Page 26: Desenvolvendo com Dojo Toolkit

dojo.js: 31k de diversão● Ajax: dojo.xhr, dojo.xhrGet, dojo.xhrPost ...

● Eventos: normalization, keys, Objects or Nodes

● DOM/CSS: dojo.byId, dojo.style, dojo.place, dojo.attr

● Animação: dojo.fadeIn/Out, dojo.animateProperty

● Query/NodeList: Seletores CSS3 ou todas as anteriores.

● Javascript Avançado: dojo.delegate (OMAC), .hitch (IoC?), .partial (mutant signature?), .exists ...

● dojo.declare

● Javascript Nativo: forEach, map, filter, some, every, indexOf ...

● Browser Sniffing: dojo.isIE < 7, isFF, isWebKit ...

Page 27: Desenvolvendo com Dojo Toolkit

Padrões em Dojo

// style and add class to a node:dojo.addClass(“someNode”, “someClass”);dojo.style(“someNode”, { opacity:0.5, lineHeight:”1.3em” });dojo.attr(“someNode”, { id:”newId” });// or chaineddojo.query(“#someNode”).addClass(“someClass”).attr({ id:”newId” }).style({ opacity:0.5, lineHeight:”1.3em” })// connect:dojo.connect(dojo.byId(“foo”), “onclick”, function(e){...});// or connect:dojo.query(“#foo”).connect(“onclick”, function(e){ ... });// or sugar:dojo.query(“#foo”).onclick(function(e){ ... });

Page 28: Desenvolvendo com Dojo Toolkit

OO Simples, Herança Simulada

dojo.declare(“some.Person”, null, {name: ”default”,constructor: function(args){dojo.mixin(this, args);}});dojo.declare(“some.Employee”, some.Person, {employeeId: 0});var bob = new some.Person({ name:”Bob Bobson” });var joy = new some.Employee({ name:”Joy”, employeeId:24 });

Page 29: Desenvolvendo com Dojo Toolkit

E mais...

●Localizado:● dojo.require(“dojo.io.script”);● dojo.require(“my.Widget”);

●Robusto:● dojo.registerModulePath(“external”, “/external/js”);● dojo.require(“external.Thinger”);

●Fácil:● dojo.provide(“my.Widget”);

●Pronto: dojo.ready, dojo.addOnLoad, .addOnUnLoad ...

Sistema de pacotes == código modularTrabalhe com Dojo e customize seu código

Page 30: Desenvolvendo com Dojo Toolkit

Dojo Core

●Use à vontate (self-service) – tudo é aditivo.●Sem rastreamento de dependências – apenas dojo.require(“algumacoisa”)●Poucas, se existem, “regras”●Escala: Cresça de acordo com suas necessidades

Page 31: Desenvolvendo com Dojo Toolkit

Viva uma vida mais feliz com require

●dojo.data – API unificada de dados●dojo.dnd - API de Drag and Drop●dojo.fx / dojo.NodeList-fx – FX avançado adicional●dojo.i18n – Ferramentas de internacionalização●dojo.string, dojo.date, dojo.regexp – utilitários comuns●dojo.io.iframe, dojo.io.script, dojo.rpc - IO avançada●... mais: dojo.behavior, dojo.html, dojo.gears,●dojo.cookie, dojo.parser, dojo.jaxer ...

Page 32: Desenvolvendo com Dojo Toolkit

Dijit – The Dojo Widget Framework

●Comportamento compartimentalizado utilizando marcação existente (como <div></div>)●Totalmente dinâmico. Componentes reutilizáveis baseados em templates●Estenda os existentes ou crie os seus ...

Page 33: Desenvolvendo com Dojo Toolkit

Inclui uma suíte de widgets

●Layouts – Painéis, Caixas...●Formulário - Validação e mais ...●Editor WYSIWYG●Árvore, Sliders, Barra de progresso, ...

Page 34: Desenvolvendo com Dojo Toolkit

Inclui uma suíte de widgets

●Layouts – Painéis, Caixas...●Formulário - Validação e mais ...●Editor WYSIWYG●Árvore, Sliders, Barra de progresso, ...

Page 35: Desenvolvendo com Dojo Toolkit

Configurar é fácil

<html><head><title>index.html</title><!-- some css --><link rel="stylesheet" href="/fwks/js/dijit/themes/tundra/tundra.css"><script type="text/javascript" src="/fwks/js/dojo/dojo.js"></script></head><body class="tundra"></body></html>

Page 36: Desenvolvendo com Dojo Toolkit

A instanciação é flexível

<script type="text/javascript">dojo.ready(function(){//load the resource:dojo.require("dijit.dijit"); // Base Dijitdojo.require("dijit.Dialog"); // Dialog Code// create programatically:var myDialog = new dijit.Dialog({title:"Login",}, "formArea");// access the instance:dijit.byId("formArea").show(); // myDialog.show();});</script>

Page 37: Desenvolvendo com Dojo Toolkit

CDS: CSS Driven Skinning

Três temas completos:●Tundra●Soria●NihiloComplementamente customizáveis

Page 38: Desenvolvendo com Dojo Toolkit

Suporte a internacionalização

Page 39: Desenvolvendo com Dojo Toolkit

Suporte a acessibilidade

● Suporte a leitor de tela● Suporte a modo de alto contraste

● Navegação por teclado● … com qualquer Dijit

Page 40: Desenvolvendo com Dojo Toolkit

Mais informações

www.dojotoolkit.org

Page 41: Desenvolvendo com Dojo Toolkit

Referências● Dojo: 0 to Production. Peter Higgins. SpringOne Americas. 2008

● Introduction to Dojo Toolkit. Sun Microsystems.

www.fgsl.eti.br@fgsl