apis do html 5 - devinrio 2010

61
HTML 5 E suas APIs

Upload: leonardo-balter

Post on 13-Jan-2015

3.799 views

Category:

Technology


0 download

DESCRIPTION

Apresentação do Dev In Rio 2010, por Leo Balter (@leobalter)

TRANSCRIPT

Page 1: APIs do HTML 5 - DevInRio 2010

HTML 5

E suas APIs

Page 2: APIs do HTML 5 - DevInRio 2010

O que é HTML 5?

Page 3: APIs do HTML 5 - DevInRio 2010

HTML 5

CSS 3JavaScript

Page 4: APIs do HTML 5 - DevInRio 2010

Pronto em 2022?

Page 5: APIs do HTML 5 - DevInRio 2010

Por quê?

Page 6: APIs do HTML 5 - DevInRio 2010

Realidade

Chrome Opera InternetExplorer

SafariFirefox

Page 7: APIs do HTML 5 - DevInRio 2010
Page 8: APIs do HTML 5 - DevInRio 2010

CNN

Flickr The New York Times

TimeVimeo

Apple

Google

Youtube Flickr

Nike

Globo.com

Facebook

AdobeNational

Geographic

Videolog

Page 9: APIs do HTML 5 - DevInRio 2010
Page 10: APIs do HTML 5 - DevInRio 2010

O que está pronto para ser implementado?

http://html5readiness.com/

Page 11: APIs do HTML 5 - DevInRio 2010

http://www.modernizr.com/

Page 12: APIs do HTML 5 - DevInRio 2010

Progressive Enhancement

■ conteúdo e funcionalidades básicas disponível para qualquer browser■marcação semântica■CSS e JavaScript em arquivos

externos e modularizados■manter os padrões do browser do

usuário

Page 13: APIs do HTML 5 - DevInRio 2010

Destaque-se

Page 14: APIs do HTML 5 - DevInRio 2010

Finalmente, as APIs

Page 15: APIs do HTML 5 - DevInRio 2010

- WebForms 2.0

- Web Storage

- Web Sockets

- Web Workers

- Geolocation

- Video & Audio

- Canvas & SVG

- Aplicações Offline

Page 16: APIs do HTML 5 - DevInRio 2010

WebForms 2.0

- Mais tipos de inputs- Validação mais simples

- Menos JavaScript

Page 17: APIs do HTML 5 - DevInRio 2010

Novos tipos de input

- text- hidden- radio- password- etc

- email- datetime- number- range- etc+

<input type=”email” required placeholder=”[email protected]” />

Page 18: APIs do HTML 5 - DevInRio 2010

<form> <input id="q" autofocus> <script> if (!("autofocus" in document.createElement("input"))) { document.getElementById("q").focus(); } </script> <input type="submit" value="Ir"></form>

Page 19: APIs do HTML 5 - DevInRio 2010

<form> <input name="n" type="number" min="0" max="10" step="2" value="6"> <input type="submit" value="Ir"></form>

http://diveintohtml5.org/examples/input-type-number-min-max-step.html

input.stepUp(n);input.stepDown(n);input.valueAsNumber;

Page 20: APIs do HTML 5 - DevInRio 2010

Validação

Page 21: APIs do HTML 5 - DevInRio 2010

<script>form = document.getElementById(‘f’);if ( form.checkValidity() )alert(‘validado!’);

</script>

<input type="text" name="letras" pattern="[a-z]+" > Pattern

Validity

Page 22: APIs do HTML 5 - DevInRio 2010

Aplicações Offline

Page 23: APIs do HTML 5 - DevInRio 2010

<html manifest=”cache.manifest”>

AddType text/cache-manifest manifest.htaccess

CACHE MANIFESTindex.htmlstylesheet.cssimagens/logo.pngjs/script.js

Page 24: APIs do HTML 5 - DevInRio 2010

CACHE MANIFEST#comentarios e versões

CACHE:index.htmlstylesheet.cssimagens/logo.pngjs/script.js

NETWORK:login.php/myapihttp://api.twitter.com

FALLBACK:/main.php /static.html

Arquivos cacheados

Arquivos que necessitamde status online

Fallback para recursonão disponível

Page 25: APIs do HTML 5 - DevInRio 2010

var cacheStatus = window.applicationCache.status;

window.applicationCache.update();

window.applicationCache.swapCache();

Page 26: APIs do HTML 5 - DevInRio 2010

Web Storage

Cookies Máximo de 20

Limitados a 4KB

Reduzem velocidade da página pois são

transferidos via headers do HTTP

Page 27: APIs do HTML 5 - DevInRio 2010

localStorage

sessionStorage

domínio de acesso

aba/janela aberta

http://dev.w3.org/html5/webstorage/

Page 28: APIs do HTML 5 - DevInRio 2010

localStorage.chave = “valor”;

localStorage[‘chave’] = “valor”;

sessionStorage.chave = “valor”;

sessionStorage[‘chave’] = “valor”;

Page 29: APIs do HTML 5 - DevInRio 2010
Page 30: APIs do HTML 5 - DevInRio 2010

SQL Database

http://dev.w3.org/html5/webdatabase/

Page 31: APIs do HTML 5 - DevInRio 2010

var db = openDatabase(“nome”, “versão”);db.transaction(function(tx) {tx.executeSql(“SELECT * FROM tabela”, callbackSucesso, callbackErro);

});

Page 32: APIs do HTML 5 - DevInRio 2010
Page 33: APIs do HTML 5 - DevInRio 2010

Geolocation

Page 34: APIs do HTML 5 - DevInRio 2010

if (navigator.geolocation) {var geo = navigator.geolocation;geo.getCurrentPosition( function (posicao) {lat = posicao.coords.latitude;lng = posicao.coords.longitude;

});}

Page 35: APIs do HTML 5 - DevInRio 2010

Integrando Geolocation com GoogleMaps

http://bit.ly/9Za0iJ

http://bit.ly/diHqBj

Page 36: APIs do HTML 5 - DevInRio 2010

Web Workers

Page 37: APIs do HTML 5 - DevInRio 2010

Script principal

Worker A

Worker B

Worker C

Worker D

Page 38: APIs do HTML 5 - DevInRio 2010

main.js: var worker = new Worker('paralelo.js'); worker.onmessage = function(event) {

alert(event.data); };

paralelo.js: self.onmessage = function(event) { // trabalho a ser exeucado em paralelo. self.postMessage(dados); }

http://leobalter.net/html5/webworkers.html

Page 39: APIs do HTML 5 - DevInRio 2010

WebSockets

Page 40: APIs do HTML 5 - DevInRio 2010

AJAXRequisição

Pedido - Abre Resposta - Fecha

WebSocketRequisição

1Abre 2 4 6531 1 1 111

Page 41: APIs do HTML 5 - DevInRio 2010

var socket = new WebSocket(location);socket.onopen = function(event) { socket.postMessage(“Olá, servidor”);}socket.onmessage = function(event) { alert(event.data);

}socket.onclose = function(event) { alert(“Socket fechado”);

}

Page 42: APIs do HTML 5 - DevInRio 2010
Page 43: APIs do HTML 5 - DevInRio 2010
Page 44: APIs do HTML 5 - DevInRio 2010

Canvas

Page 45: APIs do HTML 5 - DevInRio 2010

Scriptable Image Tag

Renderizado pelo JS

Muito bom para muita demanda de animação

Page 46: APIs do HTML 5 - DevInRio 2010

<canvas id="myCanvas" width="300" height="300"></canvas>

var canvas = document.getElementById("myCanvas");var ctx = canvas.getContext('2d');

ctx.fillStyle = "rgb(200,0,0)";ctx.fillRect( 10, 10, 55, 50 );

ctx.fillStyle = "rgba(0,0,200, 0.5)";ctx.fillRect( 30, 30, 55, 50 );

HTML:

Javascript:

Page 47: APIs do HTML 5 - DevInRio 2010
Page 48: APIs do HTML 5 - DevInRio 2010

Video & Audio

Page 49: APIs do HTML 5 - DevInRio 2010

<audio src="sound.mp3" controls></audio>

Page 50: APIs do HTML 5 - DevInRio 2010

<video width="480" height="267" poster="imagemPoster.jpg" controls> <source type="video/mp4" src="video.mp4" /> <source type="video/webm" src="video.webm" /> <source type="video/ogg" src="video.ogv" /> </video>

Page 51: APIs do HTML 5 - DevInRio 2010

Tipos de Vídeo

http://wiki.whatwg.org/wiki/Video_type_parameters

WEBM MP4/h.264 OGVSafari

Chrome 5Firefox 3.5Opera 10.5

SafariChrome 5

IE 9iPhone

Android

SafariChrome 6

IE 9 com v8Firefox 4

Opera 10.6

Page 52: APIs do HTML 5 - DevInRio 2010

Atributos HTML e JS para <video>

loopautoplay

controlspreload

Page 53: APIs do HTML 5 - DevInRio 2010

<video src=”exp.mov” controls preload=”false” loop autoplay></video>

var vid = document.getElementById('idVideo');console.log(vid.controls);console.log(vid.preload);console.log(vid.loop);console.log(vid.autoplay);

HTML:

JS:

Page 54: APIs do HTML 5 - DevInRio 2010

Controles JS

play() / playpause() / pause

volumemuted

currentTimeloadeddata

ended

http://praegnanz.de/html5video/index.php

Page 55: APIs do HTML 5 - DevInRio 2010
Page 56: APIs do HTML 5 - DevInRio 2010

<video controls> <source type="video/mp4" src="video.mp4" /> <img src="placeholder.jpg" /></video>

<video controls> <source type="video/mp4" src="video.mp4" /> Esse browser não toca esse vídeo super legal</video>

<video controls> <source type="video/mp4" src="video.mp4" /> <object><embed> // Muito flash no meio disso </embed></object></video>

Page 58: APIs do HTML 5 - DevInRio 2010
Page 59: APIs do HTML 5 - DevInRio 2010
Page 60: APIs do HTML 5 - DevInRio 2010

Dúvidas?

Page 61: APIs do HTML 5 - DevInRio 2010

Leo Balter

@leobalter

[email protected]

yayquery.com.br