Persistance des données
Table des matières
La conception d'une application web qui exécute du code coté client nécessite habituellement de prendre en compte la persistance des données. Il faut comprendre que le code JavaScript exécuté coté client est stockée en mémoire dans le navigateur et par onglet. Donc, si l'utilisateur rafraîchit la page ou change d'onglet, alors le code JavaScript est rechargé et donc les données perdues. Exemples classiques de pertes de données s'il n'y a pas de persistance :
- Un panier d'achat : si l'utilisateur rafraîchit la page, alors le panier est perdu.
- Un utilisateur connecté : si l'utilisateur rafraîchit la page, alors il doit se reconnecter de nouveau.
Il existe plusieurs possibilités pour stocker localement des données dans un navigateur. Les principales sont les cookies, Local Storage, Session Storage et IndexedDB.
Comparaison des méthodes

IndexedDB VS Local Storage
Il peut sembler plus avantageux, de par la capacité de stockage, d'utiliser IndexedDB au lieu du Local Storage, mais il faut comprendre qu'au niveau du code il y aura une plus grande complexité à gérer.
Exemple de persistance avec Vue.js
Dans le projet exemple-auth, voir le code dans le fichier authStore.js qui utilise le local storage pour persister le jeton JWT, et ainsi pouvoir conserver l'utilisateur connecté. Voir plus particulièrement :
- L'action
loginqui stocke le jeton dans le local storage. - L'action
loadPersistedTokenqui récupère le jeton du local storage. - L'action
logoutqui supprime le jeton du local storage.
Déboguer
Dans le navigateur, avec F12, on peut voir et manipuler toutes les données stockées dans le navigateur.
Dans Firefox

Dans chrome

Avec Vue.js
Lorsque qu'il est nécessaire de persister plusieurs données du store, il devient intéressant d'utiliser un plugin comme
vue-persistedstate
qui facilite la tâche.
Les tests unitaires
Voir la section [Les tests : Mocker Local storage]().