stringtranslate.com

Aplicación web progresiva

logotipo de PWA

Una aplicación web progresiva ( PWA ), o aplicación web progresiva , [1] es un tipo de software de aplicación entregado a través de la web , creado utilizando tecnologías web comunes que incluyen HTML , CSS , JavaScript y WebAssembly . [2] Está pensado para funcionar en cualquier plataforma con un navegador compatible con los estándares , incluidos dispositivos móviles y de escritorio .

Dado que una aplicación web progresiva es un tipo de página web o sitio web conocido como aplicación web , no requiere paquete ni distribución por separado. Los desarrolladores pueden simplemente publicar la aplicación web en línea, asegurarse de que cumpla con los requisitos básicos de instalación y garantizar que los usuarios podrán agregar la aplicación a su pantalla de inicio . Publicar la aplicación en sistemas de distribución digital como Apple App Store o Google Play es opcional. [3]

A partir de 2021, las funciones de PWA son compatibles en diversos grados con Google Chrome , Apple Safari , Firefox para Android y Microsoft Edge [4] [5], pero no con Firefox para escritorio. [6]

Soporte del navegador

Historia

Antecesores

En la Conferencia Mundial de Desarrolladores de Apple en 2007, Steve Jobs anunció que el iPhone "ejecutaría aplicaciones creadas con los estándares de Internet Web 2.0". [11] No se requería ningún kit de desarrollo de software (SDK) y las aplicaciones se integrarían completamente en el dispositivo a través del motor del navegador Safari . [12] Este modelo se cambió posteriormente a la App Store , como una forma de apaciguar a los desarrolladores frustrados. [13] En octubre de 2007, Jobs anunció que el año siguiente se lanzaría un SDK. [12] Como resultado, aunque Apple continuó admitiendo aplicaciones web, la gran mayoría de las aplicaciones de iOS se desplazaron hacia la App Store.

A principios de la década de 2010, las páginas web dinámicas permitieron utilizar tecnologías web para crear aplicaciones web interactivas . El diseño web responsivo y la flexibilidad del tamaño de pantalla que proporciona han hecho que el desarrollo de PWA sea más accesible. Las mejoras continuas en HTML, CSS y JavaScript permitieron que las aplicaciones web incorporaran mayores niveles de interactividad, haciendo posibles experiencias nativas en un sitio web. [14]

En 2013, Mozilla lanzó Firefox OS . Estaba destinado a ser un sistema operativo de código abierto para ejecutar aplicaciones web como aplicaciones nativas en dispositivos móviles. Firefox OS se basó en el motor de renderizado Gecko con una interfaz de usuario llamada Gaia, escrita en HTML5. El desarrollo de Firefox OS finalizó en 2016, [15] y el proyecto se suspendió por completo en 2017, [16] aunque se utilizó una bifurcación de Firefox OS como base de KaiOS , una plataforma de teléfonos básicos. [17]

Introducción inicial

En 2015, la diseñadora Frances Berriman y el ingeniero de Google Chrome Alex Russell acuñaron el término "aplicaciones web progresivas" [18] para describir las aplicaciones que aprovechan las nuevas funciones admitidas por los navegadores modernos, incluidos los trabajadores de servicios y los manifiestos de aplicaciones web , que permiten a los usuarios actualizar las aplicaciones web. a aplicaciones web progresivas en su sistema operativo (SO) nativo. Luego, Google hizo importantes esfuerzos para promover el desarrollo de PWA para Android. [19] [20] Firefox introdujo soporte para trabajadores de servicios en 2016, y Microsoft Edge y Apple Safari siguieron en 2018, [21] [19] haciendo que los trabajadores de servicios estén disponibles en todos los sistemas principales.

En 2019, las PWA eran compatibles con las versiones de escritorio de la mayoría de los navegadores, incluidos Microsoft Edge [7] (en Windows ) y Google Chrome [22] (en Windows, macOS , ChromeOS y Linux ).

En diciembre de 2020, Firefox para escritorio abandonó la implementación de PWA (específicamente, eliminó el prototipo de configuración de " navegador específico del sitio " que había estado disponible como característica experimental). Un arquitecto de Firefox señaló: "La señal que espero que estemos enviando es que la compatibilidad con PWA no llegará pronto al escritorio de Firefox". [6] Mozilla todavía planea admitir PWA en Android. [23]

Historias

Dado que una aplicación web progresiva es un tipo de página web o sitio web conocido como aplicación web , no requiere paquete ni distribución por separado. En particular, no existe ningún requisito para que los desarrolladores o usuarios instalen aplicaciones web a través de sistemas de distribución digital como Apple App Store , Google Play , Microsoft Store o Samsung Galaxy Store . En diversos grados, las principales tiendas de aplicaciones apoyan la publicación de PWA. [3] Google Play, Microsoft Store, [24] y Samsung Galaxy Store admiten PWA, pero Apple App Store no. Microsoft Store publica algunas PWA calificadas automáticamente (incluso sin las solicitudes de los autores de la aplicación) después de descubrirlas a través de la indexación de Bing . [25]

Características

Todas las aplicaciones web progresivas están diseñadas para funcionar en cualquier navegador que cumpla con los estándares web apropiados . Al igual que con otras soluciones multiplataforma, el objetivo es ayudar a los desarrolladores a crear aplicaciones multiplataforma más fácilmente que con aplicaciones nativas. [19] Las aplicaciones web progresivas emplean la estrategia de desarrollo web de mejora progresiva .

Algunas aplicaciones web progresivas utilizan un enfoque arquitectónico llamado App Shell Model. [26] En este modelo, los trabajadores de servicios almacenan la interfaz de usuario básica o " shell " de la aplicación web de diseño web responsivo en la caché fuera de línea del navegador . Este modelo permite que las PWA mantengan un uso similar al nativo con o sin conectividad web. Esto puede mejorar el tiempo de carga, al proporcionar un marco estático inicial , un diseño o arquitectura en el que el contenido se puede cargar de forma progresiva y dinámica. [27]

Criterios de instalación

Russell describió los criterios técnicos básicos para que un sitio sea considerado una aplicación web progresiva y, por lo tanto, capaz de ser instalado por navegadores en una publicación de seguimiento [28] y los actualizó desde: [29] [30]

Comparación con aplicaciones nativas

En 2017, Twitter lanzó Twitter Lite, una PWA alternativa a las aplicaciones nativas oficiales de Android e iOS . Según Twitter, Twitter Lite consumía sólo entre el 1 y el 3% del tamaño de las aplicaciones nativas. [33] Starbucks proporciona una PWA que es un 99,84% más pequeña que su aplicación iOS equivalente. Después de implementar su PWA, Starbucks duplicó el número de pedidos en línea, y los usuarios de computadoras de escritorio realizaron pedidos aproximadamente al mismo ritmo que los usuarios de aplicaciones móviles. [34]

Una revisión de 2018 publicada por Forbes encontró que los usuarios de la PWA de Pinterest pasaban un 40% más de tiempo en el sitio en comparación con el sitio web móvil anterior. Las tasas de ingresos publicitarios también aumentaron un 44% y las interacciones principales un 60%. [35] Flipkart vio que el 60% de los clientes que habían desinstalado su aplicación nativa volvieron a usar Flipkart PWA. Lancôme experimentó una disminución del 84 % en el tiempo hasta que la página sea interactiva, lo que generó un aumento del 17 % en las conversiones y un aumento del 53 % en las sesiones móviles en iOS con su PWA. [36]

Tecnologías

Existen muchas tecnologías que se utilizan comúnmente para crear aplicaciones web progresivas. Una aplicación web se considera una PWA si cumple con los criterios de instalación, por lo que puede funcionar sin conexión y agregarse a la pantalla de inicio del dispositivo. Para cumplir con esta definición, todas las PWA requieren como mínimo un trabajador de servicio y un manifiesto. [37] [38] [39]

Manifiesto

El manifiesto de la aplicación web [40] es una especificación del W3C que define un manifiesto basado en JSON (normalmente denominado manifest.json) [32] para proporcionar a los desarrolladores un lugar centralizado para colocar los metadatos asociados con una aplicación web, que incluye:

Estos metadatos son cruciales para que una aplicación se agregue a una pantalla de inicio o se incluya junto con las aplicaciones nativas.

soporte para iOS

iOS Safari implementa parcialmente manifiestos, mientras que la mayoría de los metadatos de PWA se pueden definir mediante extensiones específicas de Apple para las metaetiquetas. Estas etiquetas permiten a los desarrolladores habilitar la visualización en pantalla completa, definir iconos y pantallas de presentación y especificar un nombre para la aplicación. [41] [42]

Asamblea web

WebAssembly permite ejecutar código precompilado en un navegador web, a una velocidad casi nativa. [43] Por lo tanto, las bibliotecas escritas en lenguajes como C se pueden agregar a las aplicaciones web. Anunciado en 2015 y lanzado por primera vez en marzo de 2017, WebAssembly se convirtió en una recomendación del World Wide Web Consortium el 5 de diciembre de 2019 [44] [45] [46] y recibió el Premio de Software de Lenguajes de Programación de ACM SIGPLAN en 2021. [47]

Almacenamiento de datos

Los contextos de ejecución de las aplicaciones web progresivas se descargan siempre que sea posible, por lo que las aplicaciones web progresivas deben almacenar la mayor parte de su estado interno a largo plazo (datos de usuario, recursos de aplicaciones cargados dinámicamente) de una de las siguientes maneras:

Almacenamiento web

Web Storage es una API estándar del W3C que permite el almacenamiento de valores-clave en navegadores modernos. La API consta de dos objetos, sessionStorage (que permite el almacenamiento solo de sesión que se borra al finalizar la sesión del navegador) y localStorage (que permite el almacenamiento que persiste entre sesiones). [48]

API de 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 compatible con los navegadores modernos y permite el almacenamiento de objetos JSON y cualquier estructura representable como una cadena. [49] La API de base de datos indexada se puede utilizar con una biblioteca contenedora que proporciona construcciones adicionales a su alrededor.

Trabajadores de servicios

Un trabajador de servicio es un trabajador web que implementa un proxy de red programable que puede responder a solicitudes web/HTTP desde el documento principal. Puede verificar la disponibilidad de un servidor remoto, almacenar en caché el contenido cuando ese servidor esté disponible y servir ese contenido más adelante en el documento. Los trabajadores de servicios, como cualquier otro trabajador web, trabajan por separado del contexto del documento principal. Los trabajadores del servicio pueden manejar notificaciones automáticas 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 las registró, incluso cuando ese documento no está cargado. [50]

Los trabajadores del servicio pasan por un ciclo de vida de tres pasos: registro, instalación y activación. El registro implica indicarle al navegador la ubicación del trabajador del servicio en preparación para la instalación. La instalación se produce cuando no hay ningún trabajador de servicio instalado en el navegador de la aplicación web o si hay una actualización del trabajador de servicio. La activación ocurre cuando todas las páginas de la PWA están cerradas, para que no haya conflicto entre la versión anterior y la actualizada. El ciclo de vida también ayuda a mantener la coherencia al cambiar entre versiones de un trabajador de servicio, ya que solo un trabajador de servicio puede estar activo para un dominio. [50]

Ver también

Referencias

  1. ^ "¿Qué son las aplicaciones web progresivas? Guía PWA para principiantes". freeCodeCamp.org . 2024-01-18 . Consultado el 6 de mayo de 2024 .
  2. ^ Ltd, Cibellio. Dominar el desarrollo front-end. Cybellium Ltd. pag. 273.ISBN 979-8-8668-4882-9.
  3. ^ ab "Aplicaciones web progresivas | Software AG". techradar.softwareag.com . Consultado el 25 de septiembre de 2020 .
  4. ^ "¿Puedo usar pwa?". Puedo usar . Consultado el 27 de enero de 2021 .
  5. ^ "¿Está listo el trabajador de servicios?". Jake Archibald.
  6. ^ abcde Newman, Jared (26 de enero de 2021). "Firefox acaba de alejarse de una pieza clave de la web abierta". Empresa Rápida . Consultado el 27 de enero de 2021 .
  7. ^ ab "Descripción general de aplicaciones web progresivas en Windows". Documentación de Microsoft Edge . 13 de marzo de 2021 . Consultado el 13 de marzo de 2021 .
  8. ^ "Activa tu PWA". Navegador Vivaldi . 2021-10-07 . Consultado el 11 de octubre de 2021 .
  9. ^ Ángulo, Patricio; Avenard, Jean-Yves; Cáceres, Marcos; Cañón, Ada Rose; Carlson, Eric; Davidson, Garrett; Davis, Jon; Dubost, Karl; Eidson, Brady (6 de junio de 2023). "Noticias de WWDC23: Funciones de WebKit en Safari 17 beta". Kit web . Consultado el 14 de junio de 2023 .
  10. ^ Ángulo, Patricio; Cáceres, Marcos; Calimán, Razvan; Davis, Jon; Eidson, Brady; Hatcher, Timoteo; Niwa, Ryosuke; Simmons, Jen (27 de marzo de 2023). "Funciones de WebKit en Safari 16.4". Kit web . Consultado el 14 de junio de 2023 .
  11. ^ Empleos, Steve; Apple (11 de junio de 2007). "iPhone admitirá aplicaciones Web 2.0 de terceros". Manzana .
  12. ^ ab Ritchie, René (5 de marzo de 2018). "Año cero de la App Store: las aplicaciones web no deseadas llevaron el iPhone a un SDK". Yo más . Consultado el 23 de mayo de 2019 .
  13. ^ "La visión original de Jobs para el iPhone: sin aplicaciones nativas de terceros". 9to5Mac . 21 de octubre de 2011 . Consultado el 22 de mayo de 2019 .
  14. ^ Marcotte, Ethan (25 de mayo de 2010). "Diseño web adaptable". Una lista aparte . Consultado el 25 de mayo de 2010 .
  15. ^ "Mozilla finaliza el desarrollo comercial del sistema operativo Firefox - gHacks Tech News". Noticias de tecnología de gHacks . 27 de septiembre de 2016 . Consultado el 5 de mayo de 2022 .
  16. ^ Hoffman, Chris; Mundo PC | (28 de septiembre de 2016). "Mozilla está deteniendo todo desarrollo comercial en Firefox OS". Mundo PC . Consultado el 17 de marzo de 2021 .
  17. ^ "KaiOS, una plataforma de teléfonos básicos construida sobre las cenizas de Firefox OS, agrega aplicaciones de Facebook, Twitter y Google". TechCrunch . 26 de febrero de 2018 . Consultado el 17 de marzo de 2021 .
  18. ^ Russell, Alex. "Aplicaciones web progresivas: escapar de pestañas sin perder el alma" . Consultado el 15 de junio de 2015 .
  19. ^ abc Evans, Jonny (26 de enero de 2018). "Apple vuelve al futuro con aplicaciones web". Mundo de la informática . Consultado el 23 de mayo de 2019 .
  20. ^ Ladage, Aaron (17 de abril de 2018). "Las aplicaciones web progresivas están aquí y lo están cambiando todo". grados . Consultado el 23 de mayo de 2019 .
  21. ^ "¿Puedo usar... tablas de soporte para HTML5, CSS3, etc.?". caniuse.com . Consultado el 16 de mayo de 2021 .
  22. ^ LePage, Pete (4 de junio de 2019). "Aplicaciones web progresivas en escritorio". Desarrolladores de Google . Consultado el 13 de septiembre de 2019 .
  23. ^ agi90 (19 de diciembre de 2020). "Comentario". Reddit . Que yo sepa, no tenemos planes de desactivar las PWA en dispositivos móviles.{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  24. ^ Equipo MSEdge. "Publique su aplicación web progresiva en Microsoft Store: desarrollo de Microsoft Edge". docs.microsoft.com . Consultado el 16 de mayo de 2021 .
  25. ^ "El primer lote de aplicaciones web progresivas de Windows 10 ya está aquí". Windows Central . 2018-04-07 . Consultado el 16 de mayo de 2021 .
  26. ^ "El modelo de Shell de la aplicación".
  27. ^ Osmani, Addi. "El modelo App Shell | Fundamentos web". Desarrolladores de Google . Consultado el 23 de mayo de 2019 .
  28. ^ Russell, Alex. "Qué constituye exactamente una aplicación web progresiva" . Consultado el 18 de octubre de 2016 .
  29. ^ "¿Qué se necesita para que sea instalable?". web.dev . Consultado el 19 de mayo de 2021 .
  30. ^ web.dev. "Aplicación web progresiva" . Consultado el 15 de junio de 2015 .
  31. ^ "Almacenamiento en caché del trabajador de servicio y almacenamiento en caché HTTP". web.dev . Consultado el 19 de mayo de 2021 .
  32. ^ ab W3C "Web App Manifest", borrador de trabajo, consultado el 12 de septiembre de 2016
  33. ^ Shankland, Stephen (30 de julio de 2020). "La aplicación de Twitter está ayudando a evitar que los teléfonos estrangulen la Web". CNET . Consultado el 11 de febrero de 2023 .
  34. ^ "Los 12 mejores ejemplos de aplicaciones web progresivas (PWA) en 2021". SimiCart . 2021-02-22 . Consultado el 16 de mayo de 2021 .
  35. ^ Osmani, Addy (30 de noviembre de 2017). "Un estudio de caso de rendimiento de una aplicación web progresiva de Pinterest". Equipo de desarrollo de Chromium . Consultado el 10 de febrero de 2023 .
  36. ^ Gazdecki, Andrew (9 de marzo de 2018). "Por qué las aplicaciones web progresivas reemplazarán a las aplicaciones móviles nativas". Forbes . Consultado el 10 de febrero de 2023 .
  37. ^ "Descubrible". Red de desarrolladores de Mozilla . Consultado el 24 de abril de 2017 .
  38. ^ "Red independiente". Red de desarrolladores de Mozilla . Consultado el 24 de abril de 2017 .
  39. ^ "Aplicaciones web de carga instantánea con una arquitectura de shell de aplicación". Desarrolladores de Google . Consultado el 24 de abril de 2017 .
  40. ^ "Documentos de manifiesto web en MDN". Documentos web de MDN .
  41. ^ "Novedades de iOS 12.2 para aplicaciones web progresivas". Medio . 27 de marzo de 2019.
  42. ^ "Configuración de aplicaciones web". Guía de contenido web de Safari .
  43. ^ "Conceptos de ensamblaje web". MDN . Consultado el 14 de agosto de 2018 .
  44. ^ Consorcio World Wide Web. "Especificación principal de WebAssembly". Consorcio World Wide Web (W3) . Consultado el 6 de mayo de 2024 .
  45. ^ "WebAssembly 1.0 se convierte en una recomendación del W3C y el cuarto idioma que se ejecuta de forma nativa en los navegadores". InfoQ . Consultado el 6 de mayo de 2024 .
  46. ^ Kantha Nguyen (1 de mayo de 2022). "Nido de Casa" . Consultado el 6 de mayo de 2024 .
  47. ^ "Premio Software de Lenguajes de Programación". www.sigplan.org . Consultado el 6 de mayo de 2024 .
  48. ^ "API de almacenamiento web". MDN . Consultado el 14 de agosto de 2018 .
  49. ^ "Conceptos detrás de IndexedDB". MDN . Consultado el 14 de agosto de 2018 .
  50. ^ ab "Introducción al trabajador de servicios | Web". Desarrolladores de Google . 1 de mayo de 2019 . Consultado el 23 de mayo de 2019 .

enlaces externos