logo noucode

Sauvegarder des données avec le LocalStorage

28/08/2026

Écrit par Johanny

Javascript

ncode_level

1 vues

Sauvegarder des données avec le LocalStorage
Sommaire

Qu’est-ce que le LocalStorage ?

Le LocalStorage fait partie de l’API Web Storage, une fonctionnalité moderne des navigateurs qui permet aux développeurs de stocker des données directement sur l’ordinateur de l’utilisateur. Contrairement aux cookies, qui sont envoyés avec chaque requête HTTP vers le serveur, les données du LocalStorage restent exclusivement côté client.

L’un des principaux avantages de cette technologie est sa persistance. Les données sauvegardées dans le LocalStorage ne sont pas supprimées lorsque l’utilisateur ferme l’onglet ou redémarre son navigateur. Elles restent disponibles jusqu’à ce que le site web les supprime explicitement via JavaScript ou que l’utilisateur vide le cache de son navigateur.

Le fonctionnement du LocalStorage repose sur un système de clés-valeurs. Imaginez-le comme un dictionnaire géant où chaque information est associée à un nom unique. Par exemple, vous pouvez associer la clé "theme" à la valeur "sombre". Pour récupérer l’information, il vous suffit de demander au navigateur quelle valeur est associée à la clé "theme".

Il est important de noter que le LocalStorage est spécifique à l’origine (domaine et protocole). Cela signifie que les données sauvegardées par https://mon-site.re ne seront jamais accessibles par https://autre-site.re, garantissant ainsi une isolation fondamentale entre les sites web.

Les méthodes fondamentales du LocalStorage

Pour sauvegarder des données avec le LocalStorage, JavaScript met à notre disposition quatre méthodes simples et intuitives. Ces méthodes permettent de gérer le cycle de vie complet de vos données stockées.

La première méthode, setItem(), sert à enregistrer une donnée. Elle prend deux arguments : le nom de la clé et la valeur à stocker. Si la clé existe déjà, sa valeur sera simplement mise à jour.

La méthode getItem() permet de récupérer une valeur à partir de sa clé. Si la clé n’existe pas dans le stockage, la méthode renverra null.

Pour supprimer une information spécifique, on utilise removeItem(). Enfin, si vous souhaitez remettre le compteur à zéro et supprimer absolument toutes les données stockées par votre site, la méthode clear() est la solution.

Voici un exemple concret illustrant l’utilisation de ces quatre fonctions :

// 1. Sauvegarder une donnée
localStorage.setItem('username', 'JeanDupont');
localStorage.setItem('language', 'fr');

// 2. Récupérer une donnée

const user = localStorage.getItem('username');
console.log('Utilisateur connecté :', user); 
// Affiche: Utilisateur connecté : JeanDupont

// 3. Supprimer une donnée spécifique
localStorage.removeItem('language');

// 4. Tout effacer
localStorage.clear();

Gérer des données complexes avec JSON

Une limitation majeure du LocalStorage est qu’il ne peut stocker que des chaînes de caractères (strings). Si vous essayez de sauvegarder un tableau ou un objet JavaScript directement, le navigateur convertira l’objet en une chaîne illisible comme "[object Object]", rendant la donnée inutilisable à la récupération.

Pour contourner ce problème et sauvegarder des données complexes, nous devons utiliser le format JSON. Le processus se déroule en deux étapes : la sérialisation pour l’enregistrement et la désérialisation pour la lecture.

Pour enregistrer un objet, on utilise JSON.stringify(), qui transforme l’objet JavaScript en une chaîne de caractères JSON. À l’inverse, pour transformer cette chaîne en objet utilisable, on utilise JSON.parse().

Voici comment mettre en œuvre cette technique :

const userSettings = {
    theme: 'dark',
    notifications: true,
    fontSize: 16
    };
    
// Transformation de l'objet en chaîne JSON pour le stockage
localStorage.setItem('settings', JSON.stringify(userSettings));

// Récupération de la chaîne et transformation en objet JavaScript
const savedSettings = JSON.parse(localStorage.getItem('settings'));

console.log(savedSettings.theme); 
// Affiche: dark

Attention : L’utilisation de JSON.parse() peut provoquer une erreur si la chaîne récupérée n’est pas un JSON valide. Il est recommandé d’envelopper cette opération dans un bloc try...catch pour éviter de faire planter votre application.n

Cas pratique : Créer un mode sombre persistant

L’un des cas d’utilisation les plus courants pour sauvegarder des données avec le LocalStorage est la mémorisation des préférences d’affichage, comme le mode sombre. L’objectif est que l’utilisateur n’ait pas à réactiver le mode sombre à chaque fois qu’il change de page.

Concrètement, nous allons créer un script qui bascule une classe CSS sur le corps de la page et enregistre ce choix dans le navigateur.

const themeToggle = document.querySelector('#theme-button');
const body = document.body;
// Vérifier si une préférence existe déjà au chargement de la page
const currentTheme = localStorage.getItem('theme');

if (currentTheme === 'dark') {
    body.classList.add('dark-mode');
    }
themeToggle.addEventListener('click', () => {
// Basculer la classe CSS
    body.classList.toggle('dark-mode');
        
// Déterminer la nouvelle valeur à sauvegarder
    if (body.classList.contains('dark-mode')) {
            localStorage.setItem('theme', 'dark');
       } else {
               localStorage.setItem('theme', 'light');
                   }
    });
                   

Dans cet exemple, le script vérifie d’abord l’état du LocalStorage dès l’ouverture de la page. Si la valeur "dark" est trouvée, la classe CSS correspondante est appliquée instantanément. Lorsque l’utilisateur clique sur le bouton, le script met à jour à la fois l’interface visuelle et la valeur stockée, assurant une expérience fluide et cohérente.

Limites et précautions de sécurité

Bien que le LocalStorage soit extrêmement pratique, il ne doit pas être utilisé pour toutes les situations. Il existe des limites techniques et des risques de sécurité importants à prendre en compte.

Premièrement, la capacité de stockage est limitée. La plupart des navigateurs allouent environ 5 Mo par domaine. Si vous tentez de stocker des volumes de données plus importants, le navigateur lèvera une erreur de type QuotaExceededError. Pour des besoins de stockage plus massifs, tournez-vous vers IndexedDB.

Deuxièmement, le LocalStorage est synchrone. Cela signifie que pendant que le navigateur lit ou écrit une donnée, le fil d’exécution principal de JavaScript est bloqué. Pour de petites quantités de données, l’impact est invisible, mais des opérations massives et répétées pourraient ralentir l’interface utilisateur.

Enfin, la sécurité est le point le plus critique. Les données du LocalStorage sont accessibles en clair par n’importe quel script s’exécutant sur votre page. Cela rend le stockage vulnérable aux attaques de type XSS (Cross-Site Scripting).

Règle d’or : Ne stockez JAMAIS d’informations sensibles dans le LocalStorage. Cela inclut les mots de passe, les jetons d’authentification (JWT) sensibles, ou toute donnée personnelle confidentielle. Utilisez plutôt des cookies avec l’attribut HttpOnly pour les données de session sécurisées.

Conclusion

Savoir sauvegarder des données avec le LocalStorage est une compétence fondamentale pour tout développeur web débutant. C’est l’outil idéal pour améliorer l’expérience utilisateur en mémorisant des réglages simples, des brouillons de formulaires ou des préférences de navigation sans avoir besoin de configurer une base de données complexe côté serveur.

En résumé, retenez qu’il faut utiliser setItem pour écrire, getItem pour lire, et ne pas oublier de passer par JSON.stringify et JSON.parse pour manipuler des objets. Gardez toujours à l’esprit les limites de capacité et, surtout, ne stockez aucune donnée sensible dans cet espace.

L’étape suivante pour vous serait d’explorer le SessionStorage, qui fonctionne exactement de la même manière mais efface les données dès que l’onglet est fermé. Avez-vous déjà implémenté une fonctionnalité de persistance sur vos projets ? N’hésitez pas à partager vos astuces ou vos questions dans la section commentaires !

0 Commentaires
Le plus récent
Le plus ancien Le plus populaire

Rechercher sur le site: