26
HTML5 WebApps APIs Alejandro de Arriba [email protected] @lex0712 www.adearriba.com/blog

Modulo 2 - HTML5 WebApps APIs

Embed Size (px)

Citation preview

HTML5 WebApps APIs

Alejandro de Arriba

[email protected]

@lex0712

www.adearriba.com/blog

HTML5 - Agenda

Drag&Drop Geolocalización Almacenamiento

Web

Cache de

aplicación Webworkers

Drag&Drop

Hacer un objeto movible es sencillo: Poner atributo

draggable=true

Escuchar eventos:

HTML5 - Drag&Drop

dragstart drag dragenter dragleave

dragover drop dragend

function dragStartHandler(e) {

this.style.opacity = '0.4'; // this es el nodo (e.target)

}

var items= document.querySelectorAll(‘.arrastrable’);

[].forEach.call(items, function(item) {

item.addEventListener('dragstart', dragStartHandler, false);

});

HTML5 – Manejadores de eventos Todos los elementos

arrastrables al

empezar arrastre

cambiaran opacidad.

Contiene los datos que se envían en la acción de arrastre. La

propiedad dataTransfer se establece en el evento dragstart y

se lee/procesa en el evento drop.

HTML5 - El objeto DataTransfer

dataTransfer.effectAllowed

• Restringe el "tipo de arrastre" que puede

realizar el usuario en el elemento.

• Esta propiedad admite los siguientes valores:

none, copy, copyLink, copyMove, link,

linkMove, move, all y uninitialized.

dataTransfer.dropEffect

• Controla la información que recibe el usuario

durante los eventos y . Cuando el usuario

coloca el ratón sobre un elemento de

destino, el cursor del navegador indica el tipo

de operación que se va a realizar. La

propiedad de efecto admite los siguientes

valores: none, copy, link y move.

e.dataTransfer.setDragImage(img

element, x, y)

• En lugar de utilizar la información

predeterminada del navegador (la "imagen

fantasma"), puedes establecer un icono de

arrastre.

function handleDrop(e) {

e.stopPropagation(); // Evita redirección del navegador.

e.preventDefault();

var files = e.dataTransfer.files;

for (var i = 0, f; f = files[i]; i++) {

// Leer archivos de la lista.

}

}

HTML5 - Arrastre archivos del escritorio

Geolocalización

HTML5 - Geolocalización

Obtener coordenadas:

navigator.geolocation.getCurrentPosition(manejador);

var manejador = function(position){

var latitud = position.coords.latitude;

var longitud = position.coords.longitude;

}

Almacenamiento Web

HTML5 - Almacenamiento Web

Existen diferentes mecanismos para realizar almacenamiento

en el lado del cliente por medio de HTML5.

Web

Storage

Web SQL

Database

Indexed

Database File Access

Aplicaciones

Offline

Mejorar

Rendimiento

Permite

HTML5 – Generalidades

Sandbox • Solamente la página que guarda un dato puede

utilizarlo. Otra página no tendrá acceso a el.

Cuota • La cuota de espacio es finita y está definida por

el navegador.

Transacciones • Los dos tipos de BD permiten transacciones

para mantener la integridad de los datos.

Síncrono y

Asíncrono

• Por general todos los tipos de almacenamiento

tienen métodos asíncronos y síncronos.

HTML5 - WebStorage

Ventajas

• Presente en la mayoría de

navegadores modernos.

[IE8+]

• Sencilla: Llave-Valor

Desventajas

• Mal rendimiento para gran

cantidad de datos.

• Mal rendimiento al buscar

pues no tiene índices.

• Se requiere explícitamente

proteger la integridad

referencial.

HTML5 – Usando WebStorage

Uso sencillo creando “llaves” y sus valores:

localStorage.llave = valor;

Ejemplos:

localStorage.nombre = “Alejandro” //Asigna valor

localStorage.asignaturas = [“Español",“Ingles"]; //Asigna valor

<script>

//retornamos valor

document.querySelector(“#texto”).innerHTML = localStorage.nombre;

</script>

HTML5 - Web SQL Database

Ventajas

• Soporte para la mayoría de

navegadores móviles. (Android,

Safari,Opera Mobile)

• Buen rendimiento generalmente

siendo un API asíncrono.

• Buen rendimiento en búsquedas ya

que existen índices.

• Soporta transacciones.

• Soporta integridad de datos.

Desventajas

• No tendrá soporte en IE ni Firefox.

• Requiere conocimiento de SQL.

HTML5 - Indexed Database (IndexedDB)

Ventajas

• Buen soporte (Chrome, Firefox,

Mobile Firefox, IE10)

• Buen rendimiento generalmente

siendo un API asíncrono.

• Buen rendimiento en búsquedas

ya que existen índices.

• Soporta transacciones.

Desventajas

• API un poco más complicada.

• Se debe garantizar la integridad

de los datos.

HTML5 – File System

Ventajas

• Se pueden guardar

buena cantidad de datos.

Ideal para imágenes,

audio, video, PDFs, etc.

• Buen rendimiento ya que

es una API asíncrona.

Desventajas

• Desarrollo muy corto.

Solo es soportado por

Chrome.

• No tiene transacciones.

• No soporta indexado

para búsquedas.

Cache de aplicación

HTML5 - Cache de aplicación

Beneficios de usar

cache

• Navegación sin

conexión

• Velocidad

• Reducción de carga del

servidor

Permite que el desarrollador especifique

los archivos que el navegador debe

almacenar en caché y poner a disposición

de los usuarios que trabajen sin conexión.

La aplicación se cargará y funcionará

correctamente, incluso si el usuario pulsa

el botón de actualización mientras trabaja

sin conexión.

HTML5 - ¿Cómo lo implemento?

Utlizando el archivo de manifiesto de caché que contiene los

recursos que debe almacenar en caché el navegador para el

acceso sin conexión.

Referencia al archivo de manifiesto en la etiqueta:

<html manifest="example.appcache">

El atributo manifest debe estar incluido en todas las páginas

de tu aplicación web que quieras que se almacenen en caché.

HTML5 – Estructura del archivo Manifesto

Los sitios no pueden

tener más de 5 MB de

datos almacenados en

caché.

Si algún recurso no se

puede descargar, no

se actualizará la

caché.

CACHE MANIFEST

index.html

stylesheet.css

images/logo.png

scripts/main.js

La cadena CACHE

MANIFEST debe

aparecer en la primera

línea y es obligatoria.

HTML5 – Secciones de archivo manifesto

CACHE:

• Sección predeterminada para las

entradas. Los archivos incluidos en

esta sección (o inmediatamente

después de CACHE MANIFEST) se

almacenarán en caché explícitamente

después de descargarse por primera

vez.

NETWORK:

• Los archivos incluidos en esta sección

son recursos permitidos que requieren

conexión al servidor. En todas las

solicitudes enviadas a estos recursos

se omite la caché, incluso si el usuario

está trabajando sin conexión. Se

pueden utilizar caracteres comodín.

FALLBACK:

• Se trata de una sección opcional en la

que se especifican páginas alternativas

en caso de no poder acceder a un

recurso. La primera URI corresponde

al recurso y la segunda, a la página

alternativa. Ambas URI deben estar

relacionadas y tener el mismo origen

que el archivo de manifiesto. Se

pueden utilizar caracteres comodín.

HTML5 – Archivo manifestó completo

CACHE MANIFEST

# Cache explícita

CACHE:

index.html

stylesheet.css

# Recursos que requieren conexión a internet

NETWORK:

login.php

http://api.twitter.com

# Alternativas

FALLBACK:

/main.py /static.html

images/large/ images/offline.jpg

*.html /offline.html

# static.html será usada si main.py es inaccesible.

# offline.jpg será usada para todas las imágenes

dentro de images/large/

# offline.html será usada en lugar de cualquier otro

archivo .html

Webworkers

HTML5 – Webworkers

Un webworker es un archivo JavaScript corriendo en segundo

plano sin afectar el rendimiento de la página.

La comunicación entre un Worker y su página principal se

realiza mediante un modelo de evento y el

método postMessage().

Crear Archivo JS Crear

WebWorker

Manejar

mensajes entre

procesos

HTML5 WebApps APIs

Alejandro de Arriba

[email protected]

@lex0712

www.adearriba.com/blog