Nouveau : Datasets open source gratuits disponibles !Decouvrir →
📱
Web 20 min intermediaire

PWA : Progressive Web Apps

Sommaire

Guide approfondi sur les Progressive Web Apps (PWA)

Contexte et enjeux

Le développement web a évolué de manière exponentielle depuis ses origines. Les applications web modernes offrent des fonctionnalités qui font presque la différence avec les applications natives. Cependant, il existe un fossé entre les expériences utilisateur fournies par ces deux types d'applications.

Les Progressive Web Apps (PWAs) sont une réponse à cet enjeu. Elles permettent aux développeurs web de créer des applications web qui offrent une expérience utilisateur comparable à celle des applications mobiles natives, tout en restant accessibles sur les navigateurs web traditionnels.

L'objectif principal des PWAs est d’offrir un service Web qui peut être installé sur l'écran du téléphone et qui fonctionne hors connexion. Cela permet aux utilisateurs de profiter pleinement de la fonctionnalité de l'application même sans une connexion Internet, offrant ainsi une performance et une fiabilité similaires à celles des applications mobiles natives.

Concepts clés

1. Manifeste Web

Le manifeste web est un fichier JSON qui fournit des informations sur l'application PWA. Il détermine comment le navigateur doit traiter l'application et la manière dont elle apparaîtra à l'utilisateur.

{
  "name": "Mon Application",
  "short_name": "App",
  "start_url": "/index.html",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#000000"
}

2. Service Workers

Les service workers sont des scripts qui s'exécutent dans le navigateur et qui permettent à l'application de contrôler les ressources réseau et de gérer la mise en cache.

Voici un exemple basique d'un service worker :

self.addEventListener('install', event => {
  console.log('Service Worker installé');
  // Ajoutez ici vos fichiers à mettre en cache
});

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => response || fetch(event.request))
  );
});

3. App Shell Model

Le modèle de shell d'application est un design qui consiste à séparer les ressources de l'application en deux catégories : le "shell" (les éléments essentiels de l'interface utilisateur) et le "contenu" (les données dynamiques). Le shell est pré-chargé lors de la première visite de l'utilisateur, tandis que le contenu est récupéré à la demande.

4. Manifeste Web App

Le manifeste web app est un fichier JSON qui décrit les propriétés de votre application PWA. Il permet de personnaliser l'apparence de l'application lorsqu'elle est ajoutée au bureau du navigateur et d'informer le navigateur sur la façon dont l'application devrait être utilisée.

{
  "name": "Mon Application",
  "short_name": "App",
  "start_url": "/index.html",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#000000"
}

Guide pratique pas à pas

1. Créer un Manifeste Web

Le premier pas pour transformer une application web en PWA est de créer un manifeste web.

<link rel="manifest" href="/manifest.json">

Le fichier manifest.json doit contenir les informations suivantes :

  • name: Le nom complet de l'application.
  • short_name: Un court nom pour l'application.
  • start_url: L'URL à laquelle l'utilisateur est redirigé lorsqu'il lance l'application.
  • display: La façon dont l'application doit être affichée (ex: standalone, minimal-ui).
  • background_color: La couleur de fond de l'application.
  • theme_color: La couleur du thème de l'application.

2. Ajouter un Service Worker

Le service worker est responsable de la mise en cache des ressources et de la gestion des requêtes réseau.

Créez un fichier sw.js dans le répertoire racine de votre application :

self.addEventListener('install', event => {
  console.log('Service Worker installé');
  // Ajoutez ici vos fichiers à mettre en cache
});

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => response || fetch(event.request))
  );
});

Ensuite, inscrivez le service worker dans votre fichier index.html :

<script>
  if ('serviceWorker' in navigator) {
    window.addEventListener('load', () => {
      navigator.serviceWorker.register('/sw.js')
        .then(registration => {
          console.log('Service Worker registrado con scope:', registration.scope);
        })
        .catch(error => {
          console.error('Erreur lors de la réinscription du service worker:', error);
        });
    });
  }
</script>

3. Optimiser les Images

Les images jouent un rôle crucial dans l'expérience utilisateur d'une application PWA. Assurez-vous que vos images sont optimisées en termes de taille et de qualité.

Utilisez des formats comme WebP pour compresser les images sans perte de qualité :

<img src="image.webp" alt="Description de l'image">

4. Utiliser le App Shell Model

La mise en cache du shell d'application permet une expérience utilisateur plus fluide et rapide.

Créez un fichier index.html pour le shell :

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title>Mon Application</title>
  <link rel="manifest" href="/manifest.json">
</head>
<body>
  <header><h1>Bienvenue dans mon PWA</h1></header>
  <main id="app"></main>
  <script src="app.js"></script>
</body>
</html>

Ensuite, utilisez un service worker pour mettre en cache le shell :

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open('shell-v1').then(cache => {
      return cache.addAll([
        '/',
        '/index.html',
        '/app.js',
        '/styles.css'
      ]);
    })
  );
});

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => response || fetch(event.request))
  );
});

5. Ajouter du Contenu Dynamique

Les PWAs peuvent récupérer du contenu dynamique à la demande.

Créez un fichier data.json pour stocker vos données :

{
  "items": [
    { "id": 1, "name": "Item 1" },
    { "id": 2, "name": "Item 2" }
  ]
}

Utilisez JavaScript pour récupérer et afficher les données dynamiques :

fetch('/data.json')
  .then(response => response.json())
  .then(data => {
    const app = document.getElementById('app');
    data.items.forEach(item => {
      const itemElement = document.createElement('div');
      itemElement.textContent = item.name;
      app.appendChild(itemElement);
    });
  });

Comparatif ou tableau recapitulatif

Caractéristique Web App PWA
Installation Manuelle Automatique via le manifeste web
Connexion Obligatoire Optionnelle (mode offline)
Performances Modérées Optimisées grâce à la mise en cache et le service worker
Exérience utilisateur Variable Consistante et fluide

Retour d'expérience concret

J'ai développé une application PWA pour une entreprise qui avait besoin d'une solution web performante et fiable. En utilisant le modèle App Shell Model, nous avons été en mesure de mettre en cache les ressources essentielles, ce qui a permis une charge rapide même sur des connexions Internet lentes.

Le service worker a également été utilisé pour gérer la mise en cache des données, permettant à l'application de fonctionner hors connexion. Cette solution a réduit le temps de chargement et amélioré l'expérience utilisateur globale.

Checklist ou plan d'action

  • Créer un manifeste web (manifest.json)
  • Inscrire un service worker (sw.js)
  • Optimiser les images
  • Utiliser le modèle App Shell Model
  • Ajouter du contenu dynamique
  • Tester l'application PWA sur différents navigateurs et appareils

En suivant ces étapes, vous serez en mesure de transformer une application web en PWA, offrant ainsi une expérience utilisateur plus fluide et performante.

Un projet tech a lancer ?

Besoin d'un accompagnement ? Decrivez votre projet pour des recommandations.

Recevoir des conseils

Questions frequentes

Qu'est-ce qu'une Progressive Web App (PWA) ?
Une Progressive Web App est une application web qui utilise les dernières fonctionnalités du navigateur pour offrir une expérience d'application mobile sur n'importe quel appareil, avec des caractéristiques comme le chargement instantané, l'accès hors ligne et la mise en avant dans le navigateur.
Comment rendre une application web progressive ?
Pour transformer une application web en PWA, vous devez implémenter les technologies suivantes : Service Worker pour le cache et la gestion hors ligne, Manifest JSON pour définir des icônes, un nom d'application et d'autres informations, et utiliser HTTPS pour garantir la sécurité.
Quels avantages ont les PWAs par rapport aux applications mobiles natives ?
Les PWAs offrent plusieurs avantages : elles sont gratuites, accessibles sur tous les appareils avec un navigateur moderne, peuvent être installées sur le bureau et dans l'étagère du navigateur. Elles offrent aussi une expérience utilisateur très performante et personnalisable.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.