Aplicación web progresiva
Hay muchas tecnologías comúnmente utilizadas para crear aplicaciones web progresivas. Todas las PWA requieren como mínimo un service worker y un manifiesto.
Manifiesto
El manifiesto de la aplicación web es una especificación del W3C que define un manifiesto basado en JSON (normalmente etiquetado como manifest.json) para proporcionar a los desarrolladores un lugar centralizado para poner los metadatos asociados a una aplicación web, incluyendo:
- El nombre de la aplicación web
- Los enlaces a los iconos de la aplicación web o a los objetos de imagen
- La URL preferida para lanzar o abrir la aplicación web
- Los datos de configuración de la aplicación web
- La orientación predeterminada de la aplicación web
- La opción para establecer el modo de visualización, por ejemplo.g. pantalla completa
Estos metadatos son cruciales para que una app se añada a una pantalla de inicio o aparezca de otro modo junto a las apps nativas.
Soporte para iOSEditar
Safari para iOS implementa parcialmente los manifiestos, mientras que la mayoría de los metadatos de la PWA pueden definirse a través de extensiones específicas de Apple a las metaetiquetas. Estas etiquetas permiten a los desarrolladores habilitar la visualización a pantalla completa, definir iconos y pantallas de bienvenida, y especificar un nombre para la aplicación.
WebAssemblyEdit
WebAssembly permite que el código precompilado se ejecute en un navegador web, a una velocidad casi nativa. Así, las bibliotecas escritas en lenguajes como C pueden añadirse a las aplicaciones web. Debido al coste de pasar los datos de JavaScript a WebAssembly, los usos a corto plazo serán principalmente los de procesamiento de números (como el reconocimiento de voz y la visión por ordenador), más que las aplicaciones completas.
Almacenamiento de datosEditar
Los contextos de ejecución de las aplicaciones web progresivas se descargan siempre que sea posible, por lo que las aplicaciones web progresivas necesitan almacenar la mayor parte del estado interno a largo plazo (datos del usuario, recursos de la aplicación cargados dinámicamente) de una de las siguientes maneras
Almacenamiento webEditar
El almacenamiento web es una API estándar del W3C que permite el almacenamiento de valores clave en los navegadores modernos. La API consta de dos objetos, sessionStorage (que permite el almacenamiento sólo de sesión que se borra al finalizar la sesión del navegador) y localStorage (que permite el almacenamiento que persiste a través de las sesiones).
Service workersEditar
Un service worker es un trabajador web que implementa un proxy de red programable que puede responder a las peticiones web/HTTP del documento principal. Es capaz de comprobar la disponibilidad de un servidor remoto y almacenar en caché el contenido cuando ese servidor está disponible, y servir ese contenido posteriormente al documento. Los service workers, como cualquier otro web worker, funcionan de forma independiente al contexto del documento principal. Los service workers pueden gestionar notificaciones push y sincronizar datos en segundo plano, almacenar en caché o recuperar solicitudes de recursos, interceptar solicitudes de red y recibir actualizaciones centralizadas independientemente del documento que los registró, incluso cuando ese documento no está cargado.
Los service workers pasan por un ciclo de vida de tres pasos de Registro, Instalación y Activación. El registro consiste en indicar al navegador la ubicación del trabajador de servicios como preparación para la instalación. La instalación ocurre cuando no hay un service worker instalado en el navegador para la webapp, o si hay una actualización del service worker. La activación se produce cuando se cierran todas las páginas de la PWA, para que no haya conflicto entre la versión anterior y la actualizada. El ciclo de vida también ayuda a mantener la consistencia cuando se cambia entre versiones de service worker, ya que sólo un único service worker puede estar activo para un dominio.
APIEditar base de datos indexada
La API de base de datos indexada es una API de base de datos estándar del W3C disponible en los principales navegadores. La API es soportada por los navegadores modernos y permite el almacenamiento de objetos JSON y cualquier estructura representable como una cadena. La API de base de datos indexada puede utilizarse con una biblioteca envolvente que proporciona construcciones adicionales a su alrededor.
AppCache (obsoleto)Editar
Application Cache (o AppCache o manifiesto de caché de HTML5) es una tecnología anterior que permitía a la aplicación almacenar en caché el contenido por adelantado para su uso posterior cuando el dispositivo está desconectado. Funciona adecuadamente para las aplicaciones de una sola página para las que fue diseñada, pero falla de forma problemática para las aplicaciones de varias páginas como los wikis. A partir de mayo de 2019, la tecnología es soportada por los principales navegadores y en uso desde hace años por algunos sitios, pero ya está obsoleta en favor de los service workers y eventualmente será eliminada.