Introduzione
Gli oggetti localStorage
sessionStorage
, parte dell'API di archiviazione Web (web storage API), sono due ottimi strumenti per salvare le coppie chiave/valore (key/value) in locale. L'utilizzo di localStorage
e sessionStorage
per l'archiviazione è un'alternativa all'uso dei cookie e presenta alcuni vantaggi:
- I dati vengono salvati solo localmente e non possono essere letti dal server, il che elimina il problema di sicurezza dei cookie.
- Consente di salvare molti più dati (10 MB per la maggior parte dei browser).
- La sintassi è semplice.
È anche supportato in tutti i browser moderni, quindi puoi usarlo oggi senza problemi. I cookie sono ancora utili, soprattutto quando si tratta di autenticazione, ma ci sono momenti in cui localStorage
o sessionStorage
possono essere un'alternativa migliore.
Prerequisiti
Per completare questo tutorial, avrai bisogno di quanto segue:
- L'ultima versione di Node installata sulla tua macchina. Per installare Node, leggi i tutorial in questa pagina.
- Una conoscenza di base della codifica in JavaScript.
Comprendere localStorage e sessionStorage
localStorage
e sessionStorage
sono quasi identici e hanno la stessa API. La differenza è che con sessionStorage
i dati vengono mantenuti solo fino alla chiusura della finestra o della scheda. Con localStorage
, i dati vengono conservati fino a quando l'utente non cancella manualmente la cache del browser o fino a quando l'app Web non cancella i dati. Questo tutorial presenta localStorage
, ma la sintassi per sessionStorage
è la stessa.
Con queste conoscenze, ora puoi creare, leggere e aggiornare coppie chiave/valore in localStorage
.
Creare, leggere e aggiornare le voci
È possibile creare voci per l'oggetto localStorage
utilizzando il metodo setItem()
. Il metodo setItem()
accetta due argomenti, key
e il valore corrispondente:
let key = 'Item 1';
localStorage.setItem(key, 'Value');
Per leggere le voci, utilizzare il metodo getItem()
. Il metodo getItem()
accetta un argomento che deve essere la chiave. Questa funzione restituirà il valore corrispondente come stringa:
let myItem = localStorage.getItem(key);
Questo codice imposta myItem
uguale a 'Value'
, che è il valore corrispondente per key
.
L'aggiornamento di una voce viene eseguita con il metodo setItem()
. Di nuovo, ci vogliono due argomenti. L'argomento chiave sarà una chiave esistente mentre l'argomento valore sarà un nuovo valore:
localStorage.setItem(key, 'New Value');
Ora, il valore localStorage
per key
è 'New Value'
invece di 'Value'
.
È possibile creare, leggere e aggiornare le voci nell'oggetto localStorage
. È inoltre possibile eliminare singole voci e cancellare tutte le voci in formato localStorage
.
Eliminare e cancellare e voci
È possibile eliminare una voce con il metodo removeItem()
. Il metodo removeItem()
accetta un argomento che sarà una chiave dell'oggetto localStorage
:
localStorage.removeItem(key);
Puoi anche cancellare tutti gli elementi in localStorage
. Questo può essere fatto con il metodo clear()
:
Ecco come cancellare tutto ciò che è archiviato in localStorage
:
localStorage.clear();
Questi metodi ti danno la possibilità di rimuovere e cancellare gli elementi da localStorage
rapidamente. Tuttavia, ci sono alcuni limiti con localStorage
. Entrambi localStorage
e sessionStorage
possono memorizzare solo stringhe. Per ovviare a questo problema, dovrai utilizzare i metodi JSON.
Archiviare valori non di stringa con JSON
localStorage
può memorizzare solo valori di stringa. Se si desidera archiviare oggetti o array come valori in localStorage
, è possibile utilizzarli JSON.stringify()
per convertirli in stringhe. Durante la creazione o l'aggiornamento di coppie chiave/valore in localStorage
, utilizzare JSON.stringify()
con l'oggetto o l'array come argomento:
let myObj = { name: 'Skip', breed: 'Labrador' };
localStorage.setItem(key, JSON.stringify(myObj));
Sebbene myObj
sia un oggetto, il metodo JSON.stringify(myObj)
converte in una stringa. Quindi myObj
ora è un valore di localStorage
valido.
Per leggere e restituire valori in stringa, utilizzare il metodo JSON.parse()
. Il metodo JSON.parse()
accetta stringhe JSON e le converte in oggetti JavaScript. JSON.parse()
prende .getItem()
come argomento:
let item = JSON.parse(localStorage.getItem(key));
Ora item
è impostato uguale al valore di key
. Nello snippet di codice precedente, il valore di key
era impostato sulla versione con stringhe di myObj
. Utilizzando JSON.parse
converte myObj
indietro in un oggetto. Quindi item
è impostato uguale a myObj
come un oggetto, non una stringa.
Essere in grado di convertire array e oggetti in stringhe usando JSON.stringify
e riconvertirli usando JSON.parse
è molto utile. Dovrai anche sapere come controllare se localStorage
è vuoto o meno.
Controllare gli articoli
In questo passaggio, testerai la presenza di elementi nel file localStorage
. È possibile utilizzare le dichiarazioni if
per verificare se localStorage
contiene elementi o se è vuoto. Per fare ciò, controlla la lunghezza di localStorage
:
if (localStorage.length > 0) {
// ...
}
Se localStorage.length
è maggiore di 0
, allora ci sono elementi all'interno dell'oggetto localStorage
. Includere una dichiarazione else
nel caso in cui non ci siano elementi in localStorage
:
if (localStorage.length > 0) {
// ...
} else {
// ...
}
È possibile includere codice da applicare nelle istruzioni if
e else
. Potresti voler iterare sugli elementi in localStorage
.
Ripetizione degli elementi
Gli oggetti localStorage
e sessionStorage
non supportano il metodo forEach
. Per scorrere gli elementi in localStorage
, usa un ciclo for
:
for (let i = 0; i < localStorage.length; i++){
}
Il metodo key()
accetta un numero intero come argomento e restituisce la chiave corrispondente. Con un ciclo for
, passa i
come numero intero per key()
:
for (let i = 0; i < localStorage.length; i++){
let key = localStorage.key(i);
}
Utilizza il metodo getItem
per restituire il valore corrispondente per key
:
for (let i = 0; i < localStorage.length; i++){
let key = localStorage.key(i);
let value = localStorage.getItem(key);
}
Crea una dichiarazione console.log
per stampare sia key
e value
sullo schermo:
for (let i = 0; i < localStorage.length; i++){
let key = localStorage.key(i);
let value = localStorage.getItem(key);
console.log(key, value);
}
key()
è molto utile per l'iterazione attraverso localStorage
utilizzano cicli for
. Non tutti i browser supportano localStorage
.
Verificare il supporto
Puoi testare il supporto per localStorage
verificando se è disponibile window
sull'oggetto utilizzando un'istruzione if
:
if (window.localStorage) {
// localStorage supported
}
È inoltre possibile utilizzare il sito Web Can I use… per verificare il supporto localStorage
dei principali browser.
Conclusione
È possibile utilizzare gli oggetti localStorage
o sessionStorage
per memorizzare le coppie chiave/valore. Esistono metodi che ti consentono di interagire con gli elementi all'interno di localStorage
. Con questo tutorial, hai creato, rimosso e aggiornato le voci all'interno di localStorage
. Hai anche convertito i dati di array e oggetti in stringhe e viceversa utilizzando metodi JSON.