Documente Academic
Documente Profesional
Documente Cultură
Objetivo
Al finalizar el captulo, el alumno:
Temas
1.
Bootstrap
2.
Responsive Design
3.
4.
Web Workers
5.
6.
Notifications
.Net 4.5.1 Web Advanced Application Developer Visual Studio 2013 con C#
1.
126
Bootstrap
127
128
Laboratorio 7.1
2.
129
Responsive Design
Bootstrap utiliza CSS3 para proporcionar "Responsive Design", lo que significa que los
diseos pueden adaptarse dinmicamente a los diferentes tamaos de ventana del
navegador.
A continuacin, se muestra cmo funciona, considerando que por default se tiene el
siguiente diseo:
130
131
Esto hace que ya no tengamos que preocuparnos del tamao del browser o del
dispositivo de donde se ver, ya que la aplicacin por s misma se redimensionar para
tener una apariencia consistente y libre de errores.
Referencia:
http://www.asp.net/visual-studio/overview/2013/creating-web-projects-in-visualstudio#bootstrap
132
Laboratorio 7.2
3.
133
Sobrecarga. Cada cookie se enva con cada HTTP request/response que se hace,
independientemente de si los valores son necesarios. Esto ocurre incluso para las
solicitudes de contenido esttico (tipo de imgenes, archivos CSS y js), que puede
crear mensajes HTTP ms pesados de lo necesario.
IndexedDB: Esta herramienta parece ser un fuerte candidato para la solucin a los
requerimientos de almacenamiento complejos en el futuro. Como base de datos no
relacionales (NoSQL), proporciona simplicidad similar a Web Storage pero sin dejar
de lado caractersticas como la indexacin y las transacciones.
134
Existen 2 opciones ms disponibles: Web SQL database y Filesystem API, pero su uso
no es estndar y no est soportado por los browsers con los que actualmente contamos.
Es importante notar que el mismo host, port, y protocol debe ser provisto antes que una
pgina web pueda acceder a data escrita por otra pgina web. De esta manera, cierta
data storage creada usando el URL http://www.example.com/area1/page1.html, puede
ser
accedida
desde
esta
misma,
pero
tambin
desde
http://www.example.com/area1/page2.htm y http://www.example.com/area2/page1.htm,
por ejemplo.
La estrecha asociacin con el origen, es una consideracin importante en el desarrollo
de sitios que puedan ser alojados en un dominio compartido. En la mayora de los casos,
sera mejor prctica para evitar el uso de almacenamiento web en su totalidad si el sitio
va a vivir dentro de un dominio compartido en el futuro, debido a que cualquier sub-sitio
dentro del dominio sera capaz de acceder a sus datos.
A continuacin se detallan las opciones de almacenamiento:
1. Web Storage
Uno de los mayores problemas con el web storage es que funciona de forma
sincrnica, lo que puede llegar a bloquear la pgina mientras se produce la
lectura/escritura. Aunque la cantidad de tiempo que normalmente se necesita
para realizar estas acciones suele ser demasiado pequeo como para darnos
cuenta, podran bloquear el navegador mientras se est leyendo y escribiendo
valores en el disco. Con esto en mente, es una buena idea utilizar el
almacenamiento web para pequeas cantidades de datos y el uso de mtodos
alternativos para los datos ms grandes.
Las aplicaciones que utilizan web storage pueden tener problemas si un usuario
est modificando el mismo valor en localStorage en varias pestaas abiertas del
navegador. El resultado sera un "race condition" en el que la segunda pestaa
sobrescribe inmediatamente el valor introducido por la primera ficha.
135
2. IndexedDB
Es una base de datos key/value en la que los valores pueden variar desde simples
cadenas a estructuras complejas de objetos. Para proporcionar una rpida
recuperacin y bsqueda, incluye una manera fcil de crear ndices.
En las bases de datos relacionales estndar, las tablas se crean con esquemas
rgidos, cada tabla contiene un conjunto de columnas, cada una de ellas tiene un
nombre y un tipo de datos. Esto no permite una gran flexibilidad, ya que requiere
mucho trabajo cuando se necesitan cambios en el esquema. Por lo tanto, en lugar de
estas estructuras de tabla, IndexedDB utiliza espacios llamados almacenes de
objetos, que son reas de almacenamiento key/value.
Debido a que la especificacin de IndexDB (as como muchas de las caractersticas
de HTML5) est en continuo desarrollo, se debe agregar el siguiente cdigo para
poder trabajar con este:
136
Laboratorio N 7.3
Crear una pgina HTML que permita almacenar datos con localStorage.
Crear una pgina HTML que permita realizar las operaciones CRUD sobre
IndexedDB.
4.
137
Web Workers
Los Web Workers permiten ejecutar scripts en paralelo (background). Por ejemplo, si se
tiene un proceso costoso en recursos que no necesita interaccion con el usuario, se
podr utilizar un Worker y evitar que el navegador colapse.
Su uso es bastante sencillo, se instancia un Worker que estar en un archivo javascript,
se indica qu hacer cuando se reciba un mensaje y ya solo queda que el javascript y el
Worker se comuniquen envindose mensajes.
Es importante notar que un Worker no tiene acceso al DOM, as que si se necesita
acceder al DOM, el Worker debe enviar un mensaje de vuelta al creador, y el creador
debe procesar el mensaje y acceder al DOM segn sea necesario.
Declarar un Worker
Solo se debe crear un Worker como si fuera un objeto llamado worker:
Pero adems, se tiene que especificar el nombre del archivo que va a ejecutar, en este
caso es worker.js, con esto ya se tiene un worker listo para ejecutar el script.
138
139
Laboratorio N 7.4
Crear una pgina que permita ingresar un mensaje, y que este sea convertido a
maysculas. Esto debe ser realizado utilizando Web Worker. Cuando se reciba un
mensaje del creador, el cdigo debe recorrer cada caracter convirtindolo a maysculas,
y enviarlo de vuelta al creador.
5.
140
Antes de HTML5, la funcionalidad de Drag and Drop (arrastrar y soltar) era posible con
algunos navegadores, pero no era compatible con diferentes navegadores. Y
normalmente se implementaba mediante el uso de una biblioteca de terceros, tal como
jQuery.
Para especificar al navegador que un elemento se puede arrastrar, se utiliza el atributo
"draggable", que tiene tres valores posibles: true, false, y auto. Para la mayora de los
navegadores, "auto" es la opcin predeterminada, lo que significa que el navegador
decide si el elemento debe ser arrastrable. Por ejemplo, el elemento <img> suele ser
arrastrable por default, pero un elemento <div> no.
Al hacer "drag and drop" (arrastrar y soltar), hay eventos que se basan en el elemento
arrastrado, y otros en el "drop target" (destino de colocacin). Al usar estos eventos, se
puede personalizar la operacin segn sea necesario.
Drag Events:
Drop Events:
141
Los eventos dragenter y dragover por default rechazan a los items que se arrastran, por
lo que no puede soltar un elemento arrastrado. Se puede habilitar la cancelando la
accin por default en estos eventos: e.preventDefault().
El evento drop elimina el elemento arrastrado del modelo de objetos de documento
(DOM) y luego se aade de nuevo a la DOM en la nueva ubicacin.
A continuacin un ejemplo:
142
El ejemplo anterior muestra una operacin completa de drag and drop, pero tambin se
puede utilizar el objeto DataTransfer para pasar los datos del evento dragstart al evento
de drop. Mediante el uso del objeto DataTransfer, no es necesario crear una variable
global para hacer referencia al elemento que se est arrastrando. Tambin, se puede
pasar datos al evento drop, siempre y cuando se puede representar como una cadena o
URL. El objeto DragStart es referenciado como la propiedad dataTransfer en el evento
dragStart.
Si se usa jQuery para enlazar los eventos, la propiedad dataTransfer no podr ser usada
si no se agrega de la siguiente manera en la funcin document ready:
jQuery.event.props.push('dataTransfer')
Se pueden pasar datos al evento drop mediante la propiedad dataTransfer. El objeto
DataTransfer tiene los siguientes miembros:
A continuacin un ejemplo:
143
144
Laboratorio N 7.5
Crear una pgina HTML que permita manejar los eventos de drag and drop.
Crear una pgina HTML que permita realizar el ordenamiento de una lista. Utilizar el
objeto "dataTransfer".
6.
145
Notifications
Se trata de una notificacin que se puede ofrecer a los usuarios en ciertos eventos,
incluso cuando el usuario est en otra pestaa del navegador. Esta notificacin puede
ser til para eventos como el correo nuevo, nuevo Tweet, etc.
Para trabajar con notificaciones, en primer lugar, se debe tener el permiso del usuario
para mostrar la notificacin. Si el usuario ha dado su consentimiento para mostrar la
notificacin, entonces se podrn ver dos tipos de notificaciones:
146
147
Laboratorio N 7.6