¿Cuál es la diferencia entre las aplicaciones web progresivas y las aplicaciones web normales?

Esto es de mi serie de blogs sobre Progressive Web Apps. El último es “Aplicación web progresiva VS Aplicación web receptiva”. En el primer artículo de la serie “Por qué las aplicaciones web progresivas (PWA) no son buenas noticias para los desarrolladores de aplicaciones nativas e híbridas”, traté de explicar la inminencia de las aplicaciones web progresivas. Después de leerlo, muchos de mis lectores me preguntaron sobre la diferencia entre una aplicación web progresiva y una aplicación web receptiva.

Para mí, una aplicación web progresiva es una progresión o el siguiente paso para una aplicación web receptiva. Es decir, si tiene un sitio web (página web / aplicación web) que responde a dispositivos móviles, entonces aprovecha las nuevas funciones compatibles con los navegadores modernos para convertirlo en una aplicación web progresiva. Estas características incluyen el uso de trabajadores de servicios, manifiestos de aplicaciones web, notificaciones push, soporte fuera de línea, etc.

Con la llegada de HTML5, se introdujo una característica llamada Application Cache. Esto permite que los sitios web almacenen cantidades significativas de datos fuera de línea, y como resultado funcionan de manera similar a una aplicación nativa. Pueden almacenar en caché todo el sitio web y el contenido para que no necesite una conexión a Internet para usarlo. También con HTML5, se incluyeron características como notificación push, reproducción de video nativo, captura de audio y video nativo, entre otras cosas. El sitio web whatwebcando.today muestra la lista completa de API HTML5 de integración de dispositivos compatibles actualmente. Esto significa que las aplicaciones web tienen paridad de características con las aplicaciones nativas / híbridas y generalmente se llamaron aplicaciones web receptivas.

Funciones nativas compatibles con aplicaciones web progresivas

Las aplicaciones web progresivas se refieren a sitios web que aprovechan las características que ya ofrecen las aplicaciones web receptivas. Deben ser receptivos (funcionan en cualquier dispositivo) y ser como aplicaciones. Pero aparte de estas características de aplicaciones web receptivas, la aplicación web progresiva aprovecha las siguientes características.

Agregar un ícono a la pantalla de inicio

  • Aparece en la lista de aplicaciones. Esto se puede hacer usando WebAPKs – ¡Las aplicaciones web progresivas ahora se pueden empaquetar en paquetes de Android reales instalables!
  • Lanzamiento en pantalla completa
  • Acceso al portapapeles
  • Gráficos 2D / 3D acelerados por hardware a través de HTML5 Canvas o WebGL
  • Acceder al sistema de archivos (Chrome y Opera) y leer archivos seleccionados por el usuario en cualquier navegador
  • Interfaces de usuario suaves y lisas con animaciones de 60 fps

Funciones nativas de Android no compatibles con las aplicaciones web progresivas

Aunque la aplicación web progresiva puede hacer la mayoría de las funcionalidades requeridas por la mayoría de las aplicaciones, todavía hay algunas características que no son compatibles. Son

Funciones de telefonía: es una aplicación web progresiva que no puede interceptar SMS o llamadas, enviar SMS / MMS, obtener el número de teléfono del usuario, leer el correo de voz, hacer llamadas telefónicas sin el cuadro de diálogo Marcador.

  • Acceso a contactos, calendario y navegador.
  • Acceso a alarmas
  • Acceso a funciones de hardware de bajo nivel y sensores como la linterna, sensor de presión atmosférica. Ya se admiten sensores como Bluetooth a través de API Web Bluetooth, NFC, sensor de luz ambiental, sensor de proximidad, acelerómetro, magnetómetro y giroscopio.
  • Acceso a la gestión de tareas.
  • Modificar la configuración del sistema y los registros

Como puede ver, la brecha entre una aplicación nativa / híbrida y una aplicación web progresiva se está cerrando a medida que los desarrolladores intentan brindar más soporte para las aplicaciones web progresivas. En el futuro, podría ver a más empresas optando por una aplicación web progresiva a una aplicación nativa / híbrida. Este progreso fue posible debido a las contribuciones que obtuvieron las aplicaciones web Responsive que finalmente están allanando el camino para las aplicaciones web progresivas.

En resumen, la diferencia es el término progresivo.

Entonces, las aplicaciones web progresivas son aplicaciones web progresivas + regulares. Si elimina la progresividad, su aplicación web no se verá afectada y se comportará como una aplicación web normal.

Por lo tanto, la progresividad se agrega a las aplicaciones normales utilizando las API de los trabajadores de servicios. Los Service Workers son un proxy de cliente y se implementan como un archivo js normal. Pero este archivo js no es parte de su código de aplicación web normal (objeto de ventana) sino que actúa desde el lado de su código.

La funcionalidad principal de los trabajadores del servicio es escuchar diferentes eventos (evento de solicitudes salientes, evento de notificación push) y responder a ellos [es por eso que se llama proxy del lado del cliente]. Supongamos que, desde el navegador, se solicita una url. Luego, el trabajador de servicio intercepta ese evento de solicitud y verifica si hay una caché disponible para esa solicitud. Supongamos que si no hubiera Internet, el trabajador del servicio podría responder a la solicitud de los navegadores con sus datos de caché. Eso dará como resultado la funcionalidad fuera de línea de la aplicación web. [Este es solo un caso de uso aleatorio.]

Entonces, el término de progresividad trae principalmente (por ahora, y más están en desarrollo) soporte fuera de línea, notificación push, ícono de aplicación, pantalla de bienvenida. Entonces, desde una aplicación web normal, si se agrega el término de progresividad, podría significar que tiene estas características. Pero no se limita a esto.

Ahora, como desarrollador, cuando tiene tales apis, depende de usted cómo diseña su aplicación web progresiva. Es posible que desee mostrar encabezados y pies de página casi siempre desde el caché (para que lleguen instantáneamente) [se llama aplicación shel] y traer otros datos de la red. O suponga que proporciona todos los datos de la memoria caché y luego, cuando los datos de la red están disponibles, los agrega también.

Este es un breve resumen que podría darle sobre las aplicaciones web progresivas y espero que aclare su consulta.

Para obtener mejores ideas, la documentación de google me parece la mejor.

¡Gracias!

En pocas palabras: una aplicación web debe tener componentes específicos que la hagan progresiva.

1) Conexión HTTP / 2: transfiere datos en fragmentos y es más rápido que HTTP / 1;

2) Trabajadores del servicio: guarde en caché los datos y permita navegar por una aplicación web en malas condiciones de red o sin conexión;

3) Manifiesto de aplicación web: hace que una aplicación web sea instalable en un dispositivo y la agrega al menú de aplicaciones del sistema operativo.

Algunos artículos, como este, también agregan 4) notificaciones push a la lista: puede ver una aplicación web progresiva que le pide que opte por ellas una vez que abra la aplicación en un navegador.

Dicho esto, no todas las aplicaciones web progresivas tienen los 4 componentes. Algunos implementan una conexión HTTP / 2 y registran un Service Worker, pero no configuran un Manifiesto ni agregan notificaciones push. Entonces, ‘progresividad’ es en realidad más un espectro que un estado estrictamente definido.

More Interesting

¿De qué manera el rendimiento de las aplicaciones web afecta los ingresos y las ganancias?

¿Cómo se crean interfaces planas para sitios web?

¿Hay un clon de Quora en meteor.js o angular.js?

¿Cuáles son actualmente las mejores opciones para JavaScript del lado del servidor?

¿Cómo las grandes aplicaciones web como Quora estructuran su sitio y su código para ser utilizados en múltiples miembros del equipo?

¿Cuál es el mejor programa editor de texto para fines de desarrollo web?

¿Cuál es la mejor manera de crear una aplicación alojada en la nube desde cero?

¿Cuál es la diferencia entre una aplicación web y una aplicación móvil, cuando se habla en términos de pilas? ¿Se puede usar la misma pila para ambos?

¿Qué tecnologías web se utilizan para construir el sitio web tradingview.com?

¿Qué aplicaciones usan la API de face.com?

He estado creando una aplicación web durante los últimos 2 años. ¿Debo pasar a mi nueva idea?

Si NginX se ejecuta como un proxy inverso con Apache, ¿cómo NginX servirá los archivos estáticos más rápido si Apache está entregando todos los archivos PHP?

¿Qué tipo de aplicaciones (web o windows) se pueden automatizar utilizando herramientas RPA?

¿Debo usar scripts de Python o un ejecutable de Python en el servidor de producción?

¿Cuál es la mejor manera de crear un sistema de permisos robusto para una aplicación web para que solo los usuarios con ciertos roles puedan acceder a vistas y datos particulares?