Construye una PWA desde cero: HTML, CSS y JavaScript

Go to Homepage

Las Progressive Web Apps (PWA) son una forma de desarrollar aplicaciones web que tienen la capacidad de ofrecer una experiencia similar a las aplicaciones nativas en dispositivos móviles. Esto significa que pueden ser instaladas en la pantalla de inicio de un dispositivo y utilizadas sin necesidad de una conexión constante a Internet. Las PWA combinan las ventajas de las aplicaciones web, como la fácil accesibilidad y la compatibilidad con diferentes plataformas, con las características de las aplicaciones nativas, como la capacidad de funcionar sin conexión y enviar notificaciones push.

Una de las principales ventajas de las PWA es su capacidad para funcionar en diferentes dispositivos y sistemas operativos sin necesidad de desarrollar versiones específicas para cada plataforma. Esto se logra gracias al uso de tecnologías web estándar, como HTML, CSS y JavaScript, que son los elementos básicos para crear una PWA. Al utilizar estas tecnologías, los desarrolladores pueden aprovechar las herramientas y conocimientos existentes en el desarrollo web tradicional para construir aplicaciones que se adapten a diferentes dispositivos y resoluciones de pantalla.

Otra característica importante de las PWA es el uso de un service worker, que es un script que se ejecuta en segundo plano y permite el funcionamiento offline de la aplicación. El service worker se encarga del almacenamiento en caché de los archivos necesarios para el funcionamiento de la aplicación y de responder a las solicitudes de red de forma controlada. Gracias al service worker, las PWA pueden funcionar sin conexión o en situaciones de conectividad limitada, lo que las hace muy útiles en áreas con conexiones inestables o lentas.

Además, para que una PWA se comporte como una aplicación nativa, es necesario configurar un archivo llamado manifest.json. Este archivo contiene metadatos como el nombre de la aplicación, los iconos a mostrar en la pantalla de inicio y la configuración de navegación por parte del usuario. La creación de este archivo y su configuración adecuada son fundamentales para ofrecer una experiencia similar a la de una aplicación nativa.

Por último, para que una PWA se pueda instalar en la pantalla de inicio de un dispositivo, es necesario habilitar el acceso desde dicha pantalla. Esto se logra mediante el uso de un Web App Manifest y configurando la opción “display” en “standalone”. Con esta configuración, la PWA aparecerá en la pantalla de inicio del dispositivo como una aplicación independiente, sin la necesidad de utilizar un navegador web para acceder a ella.

Las Progressive Web Apps (PWA) son aplicaciones web que utilizan tecnologías estándar como HTML, CSS y JavaScript para ofrecer una experiencia similar a la de las aplicaciones nativas. Estas aplicaciones se pueden instalar en la pantalla de inicio de un dispositivo y funcionar sin conexión, gracias al uso de un service worker y la configuración adecuada del archivo manifest.json. Las PWA son una opción atractiva para desarrolladores que buscan crear aplicaciones multiplataforma y brindar a los usuarios una experiencia fluida y completa.

Estructura básica de una PWA

La estructura básica de una PWA consta de varios elementos clave, entre ellos:

1. HTML

El HTML es el lenguaje de marcado utilizado para estructurar y dar contenido a las páginas web. En una PWA, se utiliza para definir la estructura de la aplicación, como la disposición de los elementos y la navegación entre las distintas vistas.

2. CSS

El CSS se utiliza para dar estilo y apariencia a las páginas web. En una PWA, se utiliza para diseñar la interfaz de usuario, aplicar estilos personalizados y adaptar la apariencia de la aplicación a diferentes dispositivos y tamaños de pantalla.

3. JavaScript

El JavaScript es un lenguaje de programación que permite agregar interactividad y funcionalidad a las páginas web. En una PWA, se utiliza para implementar la lógica de la aplicación, manejar eventos, realizar peticiones a servidores y almacenar datos localmente.

Aparte de estos elementos básicos, una PWA también requiere de otros componentes esenciales:

4. Archivo manifest.json

El archivo manifest.json es un archivo de configuración que describe la aplicación, proporcionando metadata como el nombre, la descripción, los íconos, el color de fondo y la orientación de la pantalla. Este archivo es necesario para que la PWA se pueda instalar en el dispositivo del usuario y aparezca en la pantalla de inicio como una aplicación independiente.

5. Service Worker

Un service worker es un script en JavaScript que se ejecuta en segundo plano y actúa como intermediario entre la aplicación y la red. El service worker permite que la PWA funcione sin conexión y mejore el rendimiento, guardando recursos en memoria caché y respondiendo a las solicitudes del usuario de manera rápida.

6. Acceso desde la pantalla de inicio

Una PWA debe poder ser accesible desde la pantalla de inicio del dispositivo, como si fuera una aplicación nativa. Esto se logra a través del archivo manifest.json y la instalación de la aplicación en el dispositivo. Al acceder a la PWA desde la pantalla de inicio, se elimina la necesidad de abrir un navegador y se obtiene una experiencia más similar a la de una aplicación nativa.

La estructura básica de una PWA incluye los elementos HTML, CSS y JavaScript para definir la interfaz y la lógica de la aplicación. Además, el archivo manifest.json y el service worker son necesarios para habilitar la instalación en el dispositivo y mejorar el rendimiento de la aplicación. Al seguir estos pasos, podemos comenzar a construir una PWA desde cero y aprovechar todas las ventajas que ofrecen las tecnologías web modernas.

Creación del archivo manifest.json

El archivo manifest.json es esencial en el proceso de construcción de una Progressive Web App (PWA). Este archivo proporciona información sobre la aplicación y permite que se instale en el dispositivo del usuario de manera similar a una aplicación nativa. En este artículo, vamos a explorar cómo crear y configurar el archivo manifest.json.

El manifest.json es un archivo en formato JSON que contiene metadatos sobre la PWA, como el nombre de la aplicación, la descripción, los iconos, los colores de la interfaz y más. Estos metadatos son utilizados por los navegadores y las plataformas móviles para mostrar información relevante sobre la aplicación, como el nombre en la pantalla de inicio y la apariencia en la barra de tareas. Además, el archivo manifest.json define cómo se instala y actúa la PWA en el dispositivo del usuario.

A continuación, mostraremos un ejemplo básico de cómo se ve un archivo manifest.json:

{
    "name": "Mi PWA",
    "short_name": "PWA",
    "start_url": "/",
    "display": "standalone",
    "background_color": "#ffffff",
    "theme_color": "#000000",
    "icons": [
        {
            "src": "/icons/icon-96x96.png",
            "type": "image/png",
            "sizes": "96x96"
        },
        {
            "src": "/icons/icon-192x192.png",
            "type": "image/png",
            "sizes": "192x192"
        },
        {
            "src": "/icons/icon-512x512.png",
            "type": "image/png",
            "sizes": "512x512"
        }
    ]
}

En este ejemplo, definimos el nombre de la aplicación como “Mi PWA” y su nombre corto como “PWA”. La propiedad start_url especifica la URL de inicio de la aplicación. La propiedad display define cómo se mostrará la aplicación en el dispositivo del usuario. En este caso, se establece como “standalone”, lo que significa que la PWA se abrirá en su propia ventana independiente, en lugar de ejecutarse en el navegador.

Las propiedades background_color y theme_color establecen los colores de fondo y tema de la aplicación, respectivamente. Estas propiedades son utilizadas por el navegador para personalizar la interfaz de la PWA.

Finalmente, la propiedad icons define los iconos utilizados por la PWA. En este ejemplo, se especifican tres iconos de diferentes tamaños y formatos. Estos iconos son importantes, ya que se mostrarán en la pantalla de inicio del dispositivo del usuario y en la barra de tareas.

Es importante destacar que el contenido y la estructura del manifest.json pueden variar según las necesidades y características de cada PWA. Sin embargo, es recomendable seguir las directrices de los navegadores y plataformas móviles para asegurar una correcta instalación y funcionamiento de la aplicación.

El archivo manifest.json es esencial para construir una PWA exitosa. Proporciona metadatos importantes y define cómo se instala y actúa la aplicación en el dispositivo del usuario. Utilizando correctamente este archivo, podemos mejorar la experiencia de nuestros usuarios y hacer que nuestra PWA se sienta más como una aplicación nativa.

Habilitación del service worker

Un service worker es un script que actúa como intermediario entre la aplicación web y el navegador. Se ejecuta en segundo plano, por lo que permite realizar tareas como la gestión de caché, notificaciones push y la capacidad de funcionar sin conexión a Internet. En resumen, es lo que hace posible que nuestra aplicación cumpla con los principales requisitos de una PWA (Progressive Web App).

Para habilitar el service worker, es necesario registrar el archivo que lo contiene en nuestro documento HTML. Esto se realiza a través del siguiente código JavaScript, que debemos incluir en la etiqueta <script> de nuestro archivo:

if ("serviceWorker" in navigator) {
    window.addEventListener("load", function () {
        navigator.serviceWorker.register("service-worker.js").then(
            function (registration) {
                console.log(
                    "ServiceWorker registration successful with scope: ",
                    registration.scope
                );
            },
            function (err) {
                console.log("ServiceWorker registration failed: ", err);
            }
        );
    });
}

En este código, verificamos si el navegador es compatible con los service workers mediante la condición 'serviceWorker' in navigator. En caso afirmativo, escuchamos el evento load para registrar el service worker.

El método register() se encarga de registrar el service worker en el navegador. Como parámetro, le pasamos la ruta al archivo que contiene nuestro service worker, en este caso, "service-worker.js". Es importante destacar que el service worker debe encontrarse en la misma ruta del archivo HTML o en una ruta hija de la misma. Además, el archivo del service worker debe tener la extensión .js.

Una vez registrado el service worker, éste se comenzará a instalar y activar en el navegador. Podemos utilizar los eventos install y activate en el service worker para realizar tareas como la precarga de caché y la eliminación de caché obsoleta.

Es importante mencionar que el service worker solo funcionará en conexiones seguras, es decir, en sitios que utilicen el protocolo HTTPS. Esto se debe a que los service workers tienen acceso a funcionalidades sensibles, como el manejo de notificaciones push y la gestión de caché. Sin embargo, en desarrollo local podemos habilitar el uso de service workers en conexiones no seguras siguiendo estos pasos:

  1. Abrir una nueva ventana en Chrome y visitar chrome://flags/#unsafely-treat-insecure-origin-as-secure.
  2. Habilitar la opción Enable junto a Insecure origins treated as secure.

Implementación del service worker

Una de las características principales de las Progresive Web Apps (PWA) es la capacidad de trabajar sin conexión a internet. Esto es posible gracias al uso de un service worker, que es un script que se ejecuta en segundo plano y que permite a la aplicación web interceptar y controlar las solicitudes de red. En este artículo, te enseñaremos cómo implementar un service worker en una PWA desarrollada desde cero con HTML, CSS y JavaScript.

Para implementar un service worker en una PWA, primero debemos registrar el service worker en el archivo HTML correspondiente utilizando el siguiente código en un archivo JavaScript separado:

if ("serviceWorker" in navigator) {
    window.addEventListener("load", function () {
        navigator.serviceWorker.register("service-worker.js").then(
            function (registration) {
                console.log(
                    "Service Worker registrado con éxito",
                    registration.scope
                );
            },
            function (error) {
                console.log("Registro del Service Worker fallido", error);
            }
        );
    });
}

En este código, comprobamos si el navegador es compatible con service workers y, en caso afirmativo, registramos el archivo “service-worker.js”. El evento “load” se encarga de esperar hasta que la página HTML y todos sus recursos se hayan cargado antes de registrar el service worker.

Una vez que hemos registrado el service worker, debemos implementar sus funcionalidades en el archivo “service-worker.js”. A continuación, se muestra un ejemplo básico de cómo implementar un service worker para cachear los recursos y habilitar el funcionamiento sin conexión:

const CACHE_NAME = "my-pwa-cache-v1";
const urlsToCache = ["/", "/styles.css", "/script.js", "/images/logo.png"];

self.addEventListener("install", function (event) {
    event.waitUntil(
        caches.open(CACHE_NAME).then(function (cache) {
            return cache.addAll(urlsToCache);
        })
    );
});

self.addEventListener("fetch", function (event) {
    event.respondWith(
        caches.match(event.request).then(function (response) {
            if (response) {
                return response;
            }
            return fetch(event.request);
        })
    );
});

En este ejemplo, definimos un nombre para la caché y una lista de URLs de los recursos que queremos cachear. En el evento “install”, abrimos la caché y añadimos los recursos a ella. En el evento “fetch”, interceptamos las solicitudes de red y comprobamos si podemos responder con alguna entrada de la caché. Si no encontramos ninguna coincidencia en la caché, realizamos la solicitud de red de manera normal.

Una vez que hemos creado e implementado el service worker, podemos utilizar herramientas como Google Chrome DevTools para probar su funcionamiento y verificar que los recursos se estén cachando correctamente. También podemos utilizar la pestaña “Application” de DevTools para ver la información sobre los service workers registrados en el navegador.

La implementación del service worker en una PWA desarrollada desde cero con HTML, CSS y JavaScript nos permite aprovechar las características de las Progresive Web Apps, como el funcionamiento sin conexión. Con el código y las herramientas adecuadas, es posible crear una PWA de alto rendimiento y funcionalidad.

Habilitar el acceso a la aplicación desde la pantalla de inicio

La funcionalidad de una Progresive Web App (PWA) incluye la posibilidad de que los usuarios puedan acceder a la aplicación directamente desde la pantalla de inicio de su dispositivo, de manera similar a las aplicaciones nativas. Esto brinda una experiencia más integrada y facilita el acceso rápido a la PWA sin necesidad de abrir un navegador y buscar el sitio web.

Uno de los metadatos más importantes es el “name” y “short_name”, que determinan el nombre de la aplicación que se mostrará en la pantalla de inicio. Por ejemplo:

<meta name="name" content="Mi PWA" />
<meta name="short_name" content="Mi PWA" />

Además, se debe agregar el icono de la aplicación, que se mostrará en la pantalla de inicio. Esto se realiza mediante el elemento “link” y el atributo “rel” con el valor “icon”. Por ejemplo:

<link rel="icon" href="icono.png" />

Es importante tener en cuenta que el icono debe tener varios tamaños, para adaptarse a diferentes dispositivos. Puedes utilizar una herramienta en línea para generar automáticamente los diferentes tamaños necesarios.

Una vez que se han agregado estos metadatos y el icono, los usuarios podrán añadir la PWA a la pantalla de inicio de su dispositivo. Al hacerlo, se creará un acceso directo que abrirá la PWA en una ventana independiente, parecida a una aplicación nativa.

Para habilitar el acceso a la aplicación desde la pantalla de inicio de una PWA, es necesario agregar los metadatos adecuados en el archivo HTML, que incluyan el nombre de la aplicación y el icono. Esto permitirá a los usuarios añadir la PWA a la pantalla de inicio de su dispositivo y acceder a ella de manera rápida y sencilla, como si fuera una aplicación nativa. Es una de las características clave de las PWA y contribuye a ofrecer una experiencia de usuario más satisfactoria.

Otros Artículos